main activity layout improvements

unregister broadcast receiver at exit
This commit is contained in:
Juha Heinanen
2018-05-24 21:41:28 +03:00
parent 1fc65d6f37
commit e490d2449a
5 changed files with 83 additions and 35 deletions

View File

@ -8,8 +8,8 @@ import android.support.v7.app.AppCompatActivity
import android.util.Log
import android.view.MenuItem
import android.widget.*
import java.io.File
import java.io.File
import java.util.ArrayList
class AccountsActivity : AppCompatActivity() {

View File

@ -11,6 +11,7 @@ import android.content.IntentFilter
import android.content.pm.PackageManager
import android.content.res.Configuration
import android.graphics.Color
import android.graphics.PorterDuff
import android.support.v4.app.ActivityCompat
import android.support.v4.content.ContextCompat
import android.support.v7.app.AlertDialog
@ -50,6 +51,7 @@ class MainActivity : AppCompatActivity() {
internal lateinit var imm: InputMethodManager
internal lateinit var nm: NotificationManager
internal lateinit var nb: NotificationCompat.Builder
internal lateinit var receiver: BroadcastReceiver
override fun onCreate(savedInstanceState: Bundle?) {
@ -81,7 +83,7 @@ class MainActivity : AppCompatActivity() {
.setContent(RemoteViews(getPackageName(), R.layout.notification))
val intentFilter = IntentFilter("android.net.conn.CONNECTIVITY_CHANGE")
val receiver = object : BroadcastReceiver() {
receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val intentExtras = intent.extras
val info = intentExtras.getParcelable<NetworkInfo>("networkInfo")
@ -107,6 +109,8 @@ class MainActivity : AppCompatActivity() {
callee.text.clear()
callee.hint = "Callee"
callButton.text = "Call"
callButton.setTextColor(Color.BLACK)
callButton.getBackground().clearColorFilter()
if (HistoryActivity.aorHistory(aor) > 0) {
holdButton.text = "History"
holdButton.visibility = View.VISIBLE
@ -268,6 +272,8 @@ class MainActivity : AppCompatActivity() {
}
callButton.text = "Call"
callButton.getBackground().clearColorFilter()
callButton.setBackgroundResource(android.R.drawable.btn_default)
callButton.setOnClickListener {
val ua = uas[aorSpinner.selectedItemPosition]
val aor = ua.aor
@ -331,6 +337,7 @@ class MainActivity : AppCompatActivity() {
if (!Utils.isConnected(this)) {
Toast.makeText(this, "No network connection!",
Toast.LENGTH_LONG).show()
unregisterReceiver(receiver)
finish()
// System.exit(0)
} else {
@ -427,6 +434,7 @@ class MainActivity : AppCompatActivity() {
nm.cancel(10)
running = false
}
unregisterReceiver(receiver)
finish()
System.exit(0)
return true
@ -496,14 +504,15 @@ class MainActivity : AppCompatActivity() {
}
}
calls.add(Call(call, ua, uri, "out","Cancel", dtmfWatcher))
(findViewById(R.id.callButton) as Button).text = "Cancel"
val callButton = findViewById(R.id.callButton) as Button
callButton.text = "Cancel"
callButton.getBackground().setColorFilter(0xFFFF0000.toInt(), PorterDuff.Mode.MULTIPLY)
callButton.setTextColor(Color.WHITE)
(findViewById(R.id.holdButton) as Button).visibility = View.INVISIBLE
}
}
private fun addCallViews(ua: UserAgent, call: Call, id: Int) {
Log.d("Baresip", "Creating new Incoming textview at $id")
val acc = ua.account
val caller_heading = TextView(appContext)
caller_heading.text = "Incoming call from ..."
@ -518,10 +527,11 @@ class MainActivity : AppCompatActivity() {
else
heading_params.addRule(RelativeLayout.BELOW, id - 10 + 4)
caller_heading.layoutParams = heading_params
Log.d("Baresip", "Adding incoming call heading at ${caller_heading.id}")
layout.addView(caller_heading)
val caller_row = LinearLayout(appContext)
caller_row.id = id + 1
caller_row.id = caller_heading.id + 1
caller_row.setOrientation(LinearLayout.HORIZONTAL)
val caller_row_params = LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT)
@ -533,15 +543,15 @@ class MainActivity : AppCompatActivity() {
caller_uri.setTextColor(Color.BLUE)
caller_uri.textSize = 20f
caller_uri.setPadding(10, 10, 0, 10)
Log.d("Baresip", "Creating new caller textview at " + (id + 2))
caller_uri.id = id + 2
caller_uri.id = caller_row.id + 1
val caller_uri_params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f)
caller_uri.layoutParams = caller_uri_params
Log.d("Baresip", "Adding caller uri at ${caller_uri.id}")
caller_row.addView(caller_uri)
val security_button = ImageButton(appContext)
security_button.id = id + 3
security_button.id = caller_uri.id + 1
val dp24px = ((24 * appContext.resources.displayMetrics.density) + 0.5).toInt()
val security_button_params = LinearLayout.LayoutParams(dp24px, dp24px, 0.0f)
security_button_params.gravity = Gravity.CENTER_VERTICAL
@ -582,16 +592,30 @@ class MainActivity : AppCompatActivity() {
}
}
}
Log.d("Baresip", "Adding security button at ${security_button.id}")
caller_row.addView(security_button)
Log.d("Baresip", "Adding caller row at ${caller_row.id}")
layout.addView(caller_row)
val answer_row = LinearLayout(appContext)
answer_row.id = security_button.id + 1
answer_row.setOrientation(LinearLayout.HORIZONTAL)
val answer_row_params = LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT)
answer_row_params.addRule(RelativeLayout.BELOW, caller_row.id)
answer_row.layoutParams = answer_row_params
val answer_button = Button(appContext)
answer_button.text = call.status
answer_button.setBackgroundResource(android.R.drawable.btn_default)
answer_button.setTextColor(Color.BLACK)
Log.d("Baresip", "Creating new answer button at " + (id + 4))
answer_button.id = id + 4
if (answer_button.text == "Answer") {
answer_button.getBackground().setColorFilter(0xFF00FF00.toInt(), PorterDuff.Mode.MULTIPLY)
answer_button.setTextColor(Color.WHITE)
} else {
answer_button.getBackground().setColorFilter(0xFFFF0000.toInt(), PorterDuff.Mode.MULTIPLY)
answer_button.setTextColor(Color.WHITE)
}
answer_button.id = answer_row.id + 1
answer_button.setOnClickListener { v ->
when ((v as Button).text.toString()) {
"Answer" -> {
@ -602,11 +626,16 @@ class MainActivity : AppCompatActivity() {
call.status = "Hangup"
call.hold = false
this@MainActivity.runOnUiThread {
val answer_id = (Call.index(calls, call,"in") + 1) * 10 + 4
val answer_but = layout.findViewById(answer_id) as Button
answer_but.text = "Hangup"
val reject_button = layout.findViewById(answer_id + 1) as Button
Log.d("Baresip", "Setting answer button at ${answer_button.id} to Hangup")
val answer_button = layout.findViewById(answer_button.id) as Button
answer_button.text = "Hangup"
answer_button.getBackground().setColorFilter(0xFFFF00000.toInt(), PorterDuff.Mode.MULTIPLY)
answer_button.setTextColor(Color.WHITE)
Log.d("Baresip", "Setting reject button at ${answer_button.id + 1} to Hold")
val reject_button = layout.findViewById(answer_button.id + 1) as Button
reject_button.text = "Hold"
reject_button.getBackground().clearColorFilter()
reject_button.setTextColor(Color.BLACK)
}
}
}
@ -617,26 +646,28 @@ class MainActivity : AppCompatActivity() {
else -> Log.e("Baresip", "Invalid answer button text: " + v.text.toString())
}
}
val answer_button_params = LayoutParams(200, LayoutParams.WRAP_CONTENT)
answer_button_params.addRule(RelativeLayout.BELOW, id + 1)
val answer_button_params = LayoutParams(resources.getDimensionPixelSize(R.dimen.button_width),
LayoutParams.WRAP_CONTENT)
answer_button_params.setMargins(3, 10, 0, 0)
answer_button.layoutParams = answer_button_params
layout.addView(answer_button)
Log.d("Baresip", "Adding answer button at ${answer_button.id}")
answer_row.addView(answer_button)
val reject_button = Button(appContext)
if (call.status == "Answer") {
reject_button.text = "Reject"
reject_button.getBackground().setColorFilter(0xFFFF0000.toInt(), PorterDuff.Mode.MULTIPLY)
reject_button.setTextColor(Color.WHITE)
} else {
reject_button.setBackgroundResource(android.R.drawable.btn_default)
reject_button.setTextColor(Color.BLACK)
if (call.hold) {
reject_button.text = "Unhold"
} else {
reject_button.text = "Hold"
}
}
reject_button.setBackgroundResource(android.R.drawable.btn_default)
reject_button.setTextColor(Color.BLACK)
Log.d("Baresip", "Creating new reject button at " + (id + 5))
reject_button.id = id + 5
reject_button.id = answer_button.id + 1
reject_button.setOnClickListener { v ->
when ((v as Button).text.toString()) {
"Reject" -> {
@ -656,12 +687,15 @@ class MainActivity : AppCompatActivity() {
}
}
}
val reject_button_params = LayoutParams(200,
val reject_button_params = LayoutParams(resources.getDimensionPixelSize(R.dimen.button_width),
LayoutParams.WRAP_CONTENT)
reject_button_params.addRule(RelativeLayout.BELOW, id + 1)
reject_button_params.setMargins(225, 10, 0, 0)
reject_button_params.setMargins(16, 10, 0, 0)
reject_button.layoutParams = reject_button_params
layout.addView(reject_button)
Log.d("Baresip", "Adding reject button at ${reject_button.id}")
answer_row.addView(reject_button)
Log.d("Baresip", "Adding answer row at ${answer_row.id}")
layout.addView(answer_row)
}
private fun updateNotification() {
@ -746,6 +780,8 @@ class MainActivity : AppCompatActivity() {
this@MainActivity.runOnUiThread {
if (ua == uas[aorSpinner.selectedItemPosition]) {
callButton.text = "Hangup"
callButton.setTextColor(Color.WHITE)
callButton.getBackground().setColorFilter(0xFFFF0000.toInt(), PorterDuff.Mode.MULTIPLY)
holdButton.text = "Hold"
holdButton.visibility = View.VISIBLE
if (acc.mediaenc == "") {
@ -778,7 +814,7 @@ class MainActivity : AppCompatActivity() {
securityButton.setImageResource(R.drawable.box_red)
securityButton.tag = "red"
securityButton.visibility = View.VISIBLE
view_id = (inIndex + 1) * 10 + 5
view_id = (inIndex + 1) * 10 + 6
val rejectButton = findViewById(view_id) as Button
rejectButton.text = "Hold"
}
@ -915,7 +951,7 @@ class MainActivity : AppCompatActivity() {
}
val caller_heading = layout.findViewById(view_id)
val view_index = layout.indexOfChild(caller_heading)
layout.removeViews(view_index, 4 * remove_count)
layout.removeViews(view_index, 3 * remove_count)
val callsIn = Call.calls(calls, "in")
for (i in inIndex until callsIn.size) {
this@MainActivity.addCallViews(ua, callsIn[i], (i + 1) * 10)
@ -934,6 +970,8 @@ class MainActivity : AppCompatActivity() {
this@MainActivity.runOnUiThread {
if (ua == uas[aorSpinner.selectedItemPosition]) {
callButton.text = "Call"
callButton.setTextColor(Color.BLACK)
callButton.getBackground().clearColorFilter()
callButton.isEnabled = true
callee.setText("")
callee.hint = "Callee"

View File

@ -4,7 +4,6 @@ import android.content.Context
import android.support.v7.app.AlertDialog
import android.util.Log
import android.net.ConnectivityManager
import android.net.NetworkInfo
import java.io.*

View File

@ -70,7 +70,7 @@
<Button
android:id="@+id/callButton"
android:layout_width="96dp"
android:layout_width="@dimen/button_width"
android:layout_height="wrap_content"
android:background="@android:drawable/btn_default"
android:layout_below="@id/calleeRow" >
@ -78,7 +78,7 @@
<Button
android:id="@+id/holdButton"
android:layout_width="96dp"
android:layout_width="@dimen/button_width"
android:layout_height="wrap_content"
android:background="@android:drawable/btn_default"
android:text="Hold"
@ -87,9 +87,20 @@
android:visibility="invisible" >
</Button>
<Button
android:id="@+id/contactsButton"
android:layout_width="@dimen/button_width"
android:layout_height="wrap_content"
android:background="@android:drawable/btn_default"
android:text="Contacts"
android:layout_below="@id/calleeRow"
android:layout_marginLeft="212dp"
android:visibility="invisible" >
</Button>
<EditText
android:id="@+id/dtmf"
android:layout_width="96dp"
android:layout_width="@dimen/button_width"
android:layout_height="wrap_content"
android:layout_below="@id/calleeRow"
android:layout_marginLeft="212dp"

View File

@ -1,6 +1,6 @@
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="fab_margin">16dp</dimen>
<dimen name="button_width">96dp</dimen>
</resources>