no need for aors array or aor_ua function

This commit is contained in:
Juha Heinanen
2018-05-16 18:16:12 +03:00
parent dcff966196
commit a5e89d6f6a
4 changed files with 41 additions and 70 deletions

View File

@ -368,21 +368,6 @@ Java_com_tutpro_baresip_MainActivity_ua_1current(JNIEnv *env, jobject thiz)
return (*env)->NewStringUTF(env, ua_buf);
}
JNIEXPORT jstring JNICALL
Java_com_tutpro_baresip_MainActivity_aor_1ua(JNIEnv *env, jobject thiz,
jstring javaAoR)
{
const char *native_aor = (*env)->GetStringUTFChars(env, javaAoR, 0);
struct ua *ua = uag_find_aor(native_aor);
char ua_buf[256];
if (ua == NULL)
ua_buf[0] = '\0';
else
sprintf(ua_buf, "%lu", (unsigned long)ua);
return (*env)->NewStringUTF(env, ua_buf);
}
JNIEXPORT jstring JNICALL
Java_com_tutpro_baresip_MainActivity_call_1peeruri(JNIEnv *env, jobject thiz, jstring javaCall)
{

View File

@ -1,10 +1,3 @@
package com.tutpro.baresip
class Account(val ua: String, val aoR: String, val mediaenc: String, var status: String) {
private var statusImage: Int = 0
init {
this.statusImage = 0
}
}
class Account(val ua: String, val aoR: String, val mediaenc: String, var status: String) {}

View File

@ -10,7 +10,7 @@ import android.widget.TextView
import java.util.ArrayList
class AccountSpinnerAdapter(private val cxt: Context, private val aors: ArrayList<String>,
class AccountSpinnerAdapter(private val cxt: Context, private val accounts: ArrayList<Account>,
private val images: ArrayList<Int>) :
ArrayAdapter<Int>(cxt, android.R.layout.simple_spinner_item, images) {
@ -26,7 +26,7 @@ class AccountSpinnerAdapter(private val cxt: Context, private val aors: ArrayLis
val inflater = cxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val row = inflater.inflate(R.layout.account_spinner, parent, false)
val textView = row.findViewById(R.id.spinnerText) as TextView
textView.text = aors[position]
textView.text = accounts[position].aoR
textView.textSize = 17f
val imageView = row.findViewById(R.id.spinnerImage) as ImageView
imageView.setImageResource(images[position])

View File

@ -78,12 +78,12 @@ class MainActivity : AppCompatActivity() {
.setContent(RemoteViews(getPackageName(), R.layout.notification))
aorSpinner = findViewById(R.id.AoRList) as Spinner
accountAdapter = AccountSpinnerAdapter(applicationContext, aors, images)
accountAdapter = AccountSpinnerAdapter(applicationContext, accounts, images)
aorSpinner.adapter = accountAdapter
aorSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
val aor = aors[position]
val ua = aor_ua(aor)
val aor = accounts[position].aoR
val ua = accounts[position].ua
Log.i("Baresip", "Setting $aor current")
val out = Call.uaCalls(callsOut, ua)
if (out.size == 0) {
@ -122,7 +122,7 @@ class MainActivity : AppCompatActivity() {
dtmf.visibility = View.INVISIBLE
}
}
val `in` = Call.uaCalls(callsIn, aor_ua(aor))
val `in` = Call.uaCalls(callsIn, ua)
val view_count = layout.childCount
Log.d("Baresip", "View count is $view_count")
if (view_count > 7) {
@ -207,7 +207,7 @@ class MainActivity : AppCompatActivity() {
unverifyDialog.setMessage("This call is SECURE and peer is VERIFIED! " +
"Do you want to unverify the peer?")
unverifyDialog.setPositiveButton("Unverify") { dialog, _ ->
val out = Call.uaCalls(callsOut, aor_ua(aors[aorSpinner.selectedItemPosition]))
val out = Call.uaCalls(callsOut, accounts[aorSpinner.selectedItemPosition].ua)
if (out.size > 0) {
if (cmd_exec("zrtp_unverify " + out[0].zid) != 0) {
Log.w("Baresip",
@ -229,23 +229,30 @@ class MainActivity : AppCompatActivity() {
callButton.text = "Call"
callButton.setOnClickListener {
Log.d("Baresip", "AoR at position " + aors[aorSpinner.selectedItemPosition])
val aor = aors[aorSpinner.selectedItemPosition]
val aor = accounts[aorSpinner.selectedItemPosition].aoR
val ua = accounts[aorSpinner.selectedItemPosition].ua
when (callButton.text.toString()) {
"Call" -> {
call(aor, (findViewById(R.id.callee) as EditText).text.toString())
val callee = (findViewById(R.id.callee) as EditText).text.toString()
if (callee.length > 0) {
var uri = EditContactsActivity.findContactURI(callee)
if (!uri.startsWith("sip:")) uri = "sip:$uri"
if (!uri.contains("@")) {
val host = aor.substring(aor.indexOf("@") + 1)
uri = "$uri@$host"
}
call(ua, uri)
}
}
"Cancel" -> {
Log.i("Baresip", "Canceling UA " + aor_ua(aor) + " call " +
callsOut[0].call + " to " +
(findViewById(R.id.callee) as EditText).text)
ua_hangup(aor_ua(aor), callsOut[0].call, 486, "Rejected")
Log.i("Baresip", "Canceling AoR $aor call " +
callsOut[0].call + " to " + (findViewById(R.id.callee) as EditText).text)
ua_hangup(ua, callsOut[0].call, 486, "Rejected")
}
"Hangup" -> {
Log.i("Baresip", "Hanging up UA " + aor_ua(aor) + " call " +
callsOut[0].call + " to " +
(findViewById(R.id.callee) as EditText).text)
ua_hangup(aor_ua(aor), callsOut[0].call,0, "")
Log.i("Baresip", "Hanging up AoR $aor call " +
callsOut[0].call + " to " + (findViewById(R.id.callee) as EditText).text)
ua_hangup(ua, callsOut[0].call,0, "")
}
}
}
@ -268,7 +275,7 @@ class MainActivity : AppCompatActivity() {
"History" -> {
val i = Intent(this@MainActivity, HistoryActivity::class.java)
val b = Bundle()
b.putString("aor", aors[aorSpinner.selectedItemPosition])
b.putString("aor", accounts[aorSpinner.selectedItemPosition].aoR)
i.putExtras(b)
startActivityForResult(i, HISTORY_CODE)
}
@ -411,7 +418,7 @@ class MainActivity : AppCompatActivity() {
}
if (resultCode == RESULT_CANCELED) {
Log.d("Baresip", "History canceled")
if (HistoryActivity.aorHistory(aors[aorSpinner.selectedItemPosition]) == 0) {
if (HistoryActivity.aorHistory(accounts[aorSpinner.selectedItemPosition].aoR) == 0) {
(findViewById(R.id.holdButton) as Button).visibility = View.INVISIBLE
}
}
@ -423,16 +430,8 @@ class MainActivity : AppCompatActivity() {
}
}
private fun call(aor: String, callee: String) {
if (callee.length == 0) return
var uri = EditContactsActivity.findContactURI(callee)
if (!uri.startsWith("sip:")) uri = "sip:$uri"
if (!uri.contains("@")) {
val host = aor.substring(aor.indexOf("@") + 1)
uri = "$uri@$host"
}
private fun call(ua: String, uri: String) {
(findViewById(R.id.callee) as EditText).setText(uri)
val ua = aor_ua(aor)
Log.i("Baresip", "Calling $ua / $uri")
val call = ua_connect(ua, uri)
if (call != "") {
@ -597,14 +596,14 @@ class MainActivity : AppCompatActivity() {
val contentView = RemoteViews(getPackageName(), R.layout.notification)
for (i: Int in 0 .. 3) {
val resID = resources.getIdentifier("status$i", "id", packageName);
if (i < images.size) {
if (i < accounts.size) {
contentView.setImageViewResource(resID, images[i])
contentView.setViewVisibility(resID, View.VISIBLE)
} else {
contentView.setViewVisibility(resID, View.INVISIBLE)
}
}
if (images.size > 4)
if (accounts.size > 4)
contentView.setViewVisibility(R.id.etc, View.VISIBLE)
else
contentView.setViewVisibility(R.id.etc, View.INVISIBLE)
@ -617,7 +616,6 @@ class MainActivity : AppCompatActivity() {
val aor = ua_aor(ua)
Log.d("Baresip", "Adding account $ua with AoR $aor")
accounts.add(Account(ua, aor, ua_mediaenc(ua),""))
aors.add(aor)
images.add(R.drawable.dot_yellow)
this@MainActivity.runOnUiThread {
accountAdapter.notifyDataSetChanged()
@ -631,8 +629,7 @@ class MainActivity : AppCompatActivity() {
val aor = ua_aor(ua)
val ev = event.split(",")
Log.d("Baresip", "Handling event " + ev[0] + " for " + ua + "/" + call + "/" +
aor)
Log.d("Baresip", "Handling event ${ev[0]} for $ua/$call/$aor")
for (account_index in accounts.indices) {
if (accounts[account_index].aoR == aor) {
@ -643,7 +640,6 @@ class MainActivity : AppCompatActivity() {
"registered" -> {
Log.d("Baresip", "Setting status to green")
accounts[account_index].status = "OK"
aors[account_index] = aor
images[account_index] = R.drawable.dot_green
this@MainActivity.runOnUiThread {
accountAdapter.notifyDataSetChanged()
@ -653,7 +649,6 @@ class MainActivity : AppCompatActivity() {
"registering failed" -> {
Log.d("Baresip", "Setting status to red")
accounts[account_index].status = "FAIL"
aors[account_index] = aor
images[account_index] = R.drawable.dot_red
this@MainActivity.runOnUiThread {
accountAdapter.notifyDataSetChanged()
@ -670,7 +665,7 @@ class MainActivity : AppCompatActivity() {
callsOut[out_index].hold = false
callsOut[out_index].security = R.drawable.box_red
this@MainActivity.runOnUiThread {
if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) {
if (ua == accounts[aorSpinner.selectedItemPosition].ua) {
callButton.text = "Hangup"
holdButton.text = "Hold"
holdButton.visibility = View.VISIBLE
@ -697,7 +692,7 @@ class MainActivity : AppCompatActivity() {
callsIn[in_index].status = "Answer"
callsIn[in_index].security = R.drawable.box_red
this@MainActivity.runOnUiThread {
if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) {
if (ua == accounts[aorSpinner.selectedItemPosition].ua) {
if (ua_mediaenc(ua) != "") {
var view_id = (in_index + 1) * 10 + 3
val securityButton = findViewById(view_id) as ImageButton
@ -731,7 +726,7 @@ class MainActivity : AppCompatActivity() {
val new_call = Call(ua, call, peer_uri, "Answer", null)
callsIn.add(new_call)
this@MainActivity.runOnUiThread {
if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) {
if (ua == accounts[aorSpinner.selectedItemPosition].ua) {
addCallViews(ua, new_call, callsIn.size * 10)
}
}
@ -763,7 +758,7 @@ class MainActivity : AppCompatActivity() {
if (index != -1) {
callsIn[index].security = security
callsIn[index].zid = ev[3]
if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) {
if (ua == accounts[aorSpinner.selectedItemPosition].ua) {
val view_id = (index + 1) * 10 + 3
val securityButton = layout.findViewById(view_id) as ImageButton
securityButton.setImageResource(security)
@ -787,7 +782,7 @@ class MainActivity : AppCompatActivity() {
if (index != -1) {
callsIn[index].security = R.drawable.box_yellow
callsIn[index].zid = ev[3]
if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) {
if (ua == accounts[aorSpinner.selectedItemPosition].ua) {
val view_id = (index + 1) * 10 + 3
val securityButton = layout.findViewById(view_id) as ImageButton
securityButton.setImageResource(R.drawable.box_yellow)
@ -809,7 +804,7 @@ class MainActivity : AppCompatActivity() {
callsOut[out_index].security = R.drawable.box_green
callsOut[out_index].zid = ev[1]
this@MainActivity.runOnUiThread {
if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) {
if (ua == accounts[aorSpinner.selectedItemPosition].ua) {
securityButton.setImageResource(R.drawable.box_green)
securityButton.tag = "green"
securityButton.visibility = View.VISIBLE
@ -821,7 +816,7 @@ class MainActivity : AppCompatActivity() {
callsIn[in_index].security = R.drawable.box_green
callsIn[in_index].zid = ev[1]
this@MainActivity.runOnUiThread {
if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) {
if (ua == accounts[aorSpinner.selectedItemPosition].ua) {
val view_id = (in_index + 1) * 10 + 3
val securityButton = layout.findViewById(view_id) as ImageButton
securityButton.setImageResource(R.drawable.box_green)
@ -843,7 +838,7 @@ class MainActivity : AppCompatActivity() {
val remove_count = callsIn.size - in_index
callsIn.removeAt(in_index)
this@MainActivity.runOnUiThread {
if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) {
if (ua == accounts[aorSpinner.selectedItemPosition].ua) {
if (callButton.text == "Call") {
holdButton.text = "History"
holdButton.visibility = View.VISIBLE
@ -869,7 +864,7 @@ class MainActivity : AppCompatActivity() {
Log.d("Baresip", "Removing outgoing call " + ua + "/" +
call + "/" + callsOut[out_index].peerURI)
this@MainActivity.runOnUiThread {
if (ua == aor_ua(aors[aorSpinner.selectedItemPosition])) {
if (ua == accounts[aorSpinner.selectedItemPosition].ua) {
callButton.text = "Call"
callButton.isEnabled = true
callee.setText("")
@ -908,7 +903,6 @@ class MainActivity : AppCompatActivity() {
external fun baresipStart(path: String)
external fun baresipStop()
external fun call_peeruri(call: String): String
external fun aor_ua(aor: String): String
external fun ua_aor(ua: String): String
external fun ua_mediaenc(ua: String): String
external fun ua_connect(ua: String, peer_uri: String): String
@ -924,7 +918,6 @@ class MainActivity : AppCompatActivity() {
internal var running: Boolean = false
internal var accounts = ArrayList<Account>()
internal var aors = ArrayList<String>()
internal var images = ArrayList<Int>()
internal var callsIn = ArrayList<Call>()
internal var callsOut = ArrayList<Call>()