- Fixed call, message, and call transfer actions when initiated from
notification. - Moved save and restore messages functions to Message class. - Coding style edits.
This commit is contained in:
@@ -26,8 +26,6 @@ import java.io.InputStream
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class BaresipService: Service() {
|
class BaresipService: Service() {
|
||||||
|
|
||||||
private val LOG_TAG = "Baresip Service"
|
private val LOG_TAG = "Baresip Service"
|
||||||
@@ -173,7 +171,8 @@ class BaresipService: Service() {
|
|||||||
|
|
||||||
"Call Show", "Call Answer" -> {
|
"Call Show", "Call Answer" -> {
|
||||||
val newIntent = Intent(this, MainActivity::class.java)
|
val newIntent = Intent(this, MainActivity::class.java)
|
||||||
newIntent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP
|
newIntent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP or
|
||||||
|
Intent.FLAG_ACTIVITY_NEW_TASK
|
||||||
newIntent.putExtra("action", action.toLowerCase())
|
newIntent.putExtra("action", action.toLowerCase())
|
||||||
newIntent.putExtra("callp", intent!!.getStringExtra("callp"))
|
newIntent.putExtra("callp", intent!!.getStringExtra("callp"))
|
||||||
startActivity(newIntent)
|
startActivity(newIntent)
|
||||||
@@ -201,7 +200,8 @@ class BaresipService: Service() {
|
|||||||
Log.w(LOG_TAG, "onStartCommand did not find ua $uap")
|
Log.w(LOG_TAG, "onStartCommand did not find ua $uap")
|
||||||
} else {
|
} else {
|
||||||
val newIntent = Intent(this, MainActivity::class.java)
|
val newIntent = Intent(this, MainActivity::class.java)
|
||||||
newIntent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP
|
newIntent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or
|
||||||
|
Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK
|
||||||
newIntent.putExtra("action", action.toLowerCase())
|
newIntent.putExtra("action", action.toLowerCase())
|
||||||
newIntent.putExtra("callp", intent.getStringExtra("callp"))
|
newIntent.putExtra("callp", intent.getStringExtra("callp"))
|
||||||
newIntent.putExtra("uri", intent.getStringExtra("uri"))
|
newIntent.putExtra("uri", intent.getStringExtra("uri"))
|
||||||
@@ -222,10 +222,11 @@ class BaresipService: Service() {
|
|||||||
|
|
||||||
"Message Show", "Message Reply" -> {
|
"Message Show", "Message Reply" -> {
|
||||||
val newIntent = Intent(this, MainActivity::class.java)
|
val newIntent = Intent(this, MainActivity::class.java)
|
||||||
newIntent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP
|
newIntent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP or
|
||||||
|
Intent.FLAG_ACTIVITY_NEW_TASK
|
||||||
newIntent.putExtra("action", action.toLowerCase())
|
newIntent.putExtra("action", action.toLowerCase())
|
||||||
newIntent.putExtra("uap", intent!!.getStringExtra("uap"))
|
newIntent.putExtra("uap", intent!!.getStringExtra("uap"))
|
||||||
newIntent.putExtra("time", intent.getStringExtra("time"))
|
newIntent.putExtra("peer", intent.getStringExtra("peer"))
|
||||||
startActivity(newIntent)
|
startActivity(newIntent)
|
||||||
nm.cancel(BaresipService.MESSAGE_NOTIFICATION_ID)
|
nm.cancel(BaresipService.MESSAGE_NOTIFICATION_ID)
|
||||||
}
|
}
|
||||||
@@ -533,20 +534,20 @@ class BaresipService: Service() {
|
|||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.w(LOG_TAG, "UTF-8 decode failed")
|
Log.w(LOG_TAG, "UTF-8 decode failed")
|
||||||
}
|
}
|
||||||
Log.d(LOG_TAG, "Message event for $uap from $peer")
|
|
||||||
val ua = UserAgent.find(uap)
|
val ua = UserAgent.find(uap)
|
||||||
if (ua == null) {
|
if (ua == null) {
|
||||||
Log.w(LOG_TAG, "messageEvent did not find ua $uap")
|
Log.w(LOG_TAG, "messageEvent did not find ua $uap")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val timeStamp = System.currentTimeMillis().toString()
|
val timeStamp = System.currentTimeMillis().toString()
|
||||||
|
Log.d(LOG_TAG, "Message event for $uap from $peer at $timeStamp")
|
||||||
Message.add(Message(ua.account.aor, peer, text, timeStamp.toLong(),
|
Message.add(Message(ua.account.aor, peer, text, timeStamp.toLong(),
|
||||||
R.drawable.arrow_down_green, 0, "", true))
|
R.drawable.arrow_down_green, 0, "", true))
|
||||||
if (!Utils.isVisible()) {
|
if (!Utils.isVisible()) {
|
||||||
val intent = Intent(this, BaresipService::class.java)
|
val intent = Intent(this, BaresipService::class.java)
|
||||||
intent.action = "Message Show"
|
intent.action = "Message Show"
|
||||||
intent.putExtra("uap", uap)
|
intent.putExtra("uap", uap)
|
||||||
.putExtra("time", timeStamp)
|
.putExtra("peer", peer)
|
||||||
val pi = PendingIntent.getService(this, MESSAGE_REQ_CODE, intent,
|
val pi = PendingIntent.getService(this, MESSAGE_REQ_CODE, intent,
|
||||||
PendingIntent.FLAG_UPDATE_CURRENT)
|
PendingIntent.FLAG_UPDATE_CURRENT)
|
||||||
val nb = NotificationCompat.Builder(this, HIGH_CHANNEL_ID)
|
val nb = NotificationCompat.Builder(this, HIGH_CHANNEL_ID)
|
||||||
@@ -567,19 +568,19 @@ class BaresipService: Service() {
|
|||||||
val replyIntent = Intent(this, BaresipService::class.java)
|
val replyIntent = Intent(this, BaresipService::class.java)
|
||||||
replyIntent.action = "Message Reply"
|
replyIntent.action = "Message Reply"
|
||||||
replyIntent.putExtra("uap", uap)
|
replyIntent.putExtra("uap", uap)
|
||||||
.putExtra("time", timeStamp)
|
.putExtra("peer", peer)
|
||||||
val replyPendingIntent = PendingIntent.getService(this,
|
val replyPendingIntent = PendingIntent.getService(this,
|
||||||
REPLY_REQ_CODE, replyIntent, PendingIntent.FLAG_UPDATE_CURRENT)
|
REPLY_REQ_CODE, replyIntent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||||
val saveIntent = Intent(this, BaresipService::class.java)
|
val saveIntent = Intent(this, BaresipService::class.java)
|
||||||
saveIntent.action = "Message Save"
|
saveIntent.action = "Message Save"
|
||||||
saveIntent.putExtra("uap", uap)
|
saveIntent.putExtra("uap", uap)
|
||||||
.putExtra("time", timeStamp)
|
.putExtra("time", timeStamp)
|
||||||
val savePendingIntent = PendingIntent.getService(this,
|
val savePendingIntent = PendingIntent.getService(this,
|
||||||
SAVE_REQ_CODE, saveIntent, PendingIntent.FLAG_UPDATE_CURRENT)
|
SAVE_REQ_CODE, saveIntent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||||
val deleteIntent = Intent(this, BaresipService::class.java)
|
val deleteIntent = Intent(this, BaresipService::class.java)
|
||||||
deleteIntent.action = "Message Delete"
|
deleteIntent.action = "Message Delete"
|
||||||
deleteIntent.putExtra("uap", uap)
|
deleteIntent.putExtra("uap", uap)
|
||||||
.putExtra("time", timeStamp)
|
.putExtra("time", timeStamp)
|
||||||
val deletePendingIntent = PendingIntent.getService(this,
|
val deletePendingIntent = PendingIntent.getService(this,
|
||||||
DELETE_REQ_CODE, deleteIntent, PendingIntent.FLAG_UPDATE_CURRENT)
|
DELETE_REQ_CODE, deleteIntent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||||
nb.addAction(R.drawable.ic_stat, "Reply", replyPendingIntent)
|
nb.addAction(R.drawable.ic_stat, "Reply", replyPendingIntent)
|
||||||
@@ -591,7 +592,7 @@ class BaresipService: Service() {
|
|||||||
val intent = Intent("service event")
|
val intent = Intent("service event")
|
||||||
intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP
|
intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP
|
||||||
intent.putExtra("event", "message show")
|
intent.putExtra("event", "message show")
|
||||||
intent.putExtra("params", arrayListOf(uap, timeStamp))
|
intent.putExtra("params", arrayListOf(uap, peer))
|
||||||
LocalBroadcastManager.getInstance(this).sendBroadcast(intent)
|
LocalBroadcastManager.getInstance(this).sendBroadcast(intent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,8 +47,7 @@ class CallsActivity : AppCompatActivity() {
|
|||||||
when (which) {
|
when (which) {
|
||||||
DialogInterface.BUTTON_NEUTRAL, DialogInterface.BUTTON_NEGATIVE -> {
|
DialogInterface.BUTTON_NEUTRAL, DialogInterface.BUTTON_NEGATIVE -> {
|
||||||
val i = Intent(this@CallsActivity, MainActivity::class.java)
|
val i = Intent(this@CallsActivity, MainActivity::class.java)
|
||||||
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK or
|
i.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP
|
||||||
Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP)
|
|
||||||
if (which == DialogInterface.BUTTON_NEUTRAL)
|
if (which == DialogInterface.BUTTON_NEUTRAL)
|
||||||
i.putExtra("action", "call")
|
i.putExtra("action", "call")
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ class ChatActivity : AppCompatActivity() {
|
|||||||
Log.d("Baresip", "Saving newMessage ${newMessage.text} for $aor::$peerUri")
|
Log.d("Baresip", "Saving newMessage ${newMessage.text} for $aor::$peerUri")
|
||||||
BaresipService.chatTexts.put("$aor::$peerUri", newMessage.text.toString())
|
BaresipService.chatTexts.put("$aor::$peerUri", newMessage.text.toString())
|
||||||
}
|
}
|
||||||
ChatsActivity.saveMessages(applicationContext.filesDir.absolutePath)
|
Message.saveMessages(applicationContext.filesDir.absolutePath)
|
||||||
super.onPause()
|
super.onPause()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,12 +8,6 @@ import android.support.v7.app.AppCompatActivity
|
|||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.widget.*
|
import android.widget.*
|
||||||
|
|
||||||
import java.io.File
|
|
||||||
import java.io.FileInputStream
|
|
||||||
import java.io.FileOutputStream
|
|
||||||
import java.io.IOException
|
|
||||||
import java.io.ObjectInputStream
|
|
||||||
import java.io.ObjectOutputStream
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class ChatsActivity: AppCompatActivity() {
|
class ChatsActivity: AppCompatActivity() {
|
||||||
@@ -78,7 +72,7 @@ class ChatsActivity: AppCompatActivity() {
|
|||||||
else
|
else
|
||||||
clAdapter.remove(m)
|
clAdapter.remove(m)
|
||||||
clAdapter.notifyDataSetChanged()
|
clAdapter.notifyDataSetChanged()
|
||||||
Message.messages(msgs)
|
BaresipService.messages = msgs
|
||||||
uaMessages = uaMessages(aor)
|
uaMessages = uaMessages(aor)
|
||||||
}
|
}
|
||||||
DialogInterface.BUTTON_POSITIVE -> {
|
DialogInterface.BUTTON_POSITIVE -> {
|
||||||
@@ -148,7 +142,7 @@ class ChatsActivity: AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
saveMessages(applicationContext.filesDir.absolutePath)
|
Message.saveMessages(applicationContext.filesDir.absolutePath)
|
||||||
super.onPause()
|
super.onPause()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -206,20 +200,12 @@ class ChatsActivity: AppCompatActivity() {
|
|||||||
|
|
||||||
var filesPath = ""
|
var filesPath = ""
|
||||||
|
|
||||||
fun findUaMessage(aor: String, timeStamp: Long): Message? {
|
|
||||||
for (i in Message.messages().indices.reversed())
|
|
||||||
if ((Message.messages()[i].aor == aor) &&
|
|
||||||
(Message.messages()[i].timeStamp == timeStamp))
|
|
||||||
return Message.messages()[i]
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
fun saveUaMessage(aor: String, time: Long, path: String) {
|
fun saveUaMessage(aor: String, time: Long, path: String) {
|
||||||
for (i in Message.messages().indices.reversed())
|
for (i in Message.messages().indices.reversed())
|
||||||
if ((Message.messages()[i].aor == aor) &&
|
if ((Message.messages()[i].aor == aor) &&
|
||||||
(Message.messages()[i].timeStamp == time)) {
|
(Message.messages()[i].timeStamp == time)) {
|
||||||
Message.messages()[i].new = false
|
Message.messages()[i].new = false
|
||||||
saveMessages(path)
|
Message.saveMessages(path)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -229,39 +215,10 @@ class ChatsActivity: AppCompatActivity() {
|
|||||||
if ((Message.messages()[i].aor == aor) &&
|
if ((Message.messages()[i].aor == aor) &&
|
||||||
(Message.messages()[i].timeStamp == time)) {
|
(Message.messages()[i].timeStamp == time)) {
|
||||||
Message.messages().removeAt(i)
|
Message.messages().removeAt(i)
|
||||||
saveMessages(path)
|
Message.saveMessages(path)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun saveMessages(path: String = filesPath) {
|
|
||||||
val file = File(path, "messages")
|
|
||||||
try {
|
|
||||||
val fos = FileOutputStream(file)
|
|
||||||
val oos = ObjectOutputStream(fos)
|
|
||||||
oos.writeObject(Message.messages())
|
|
||||||
oos.close()
|
|
||||||
fos.close()
|
|
||||||
} catch (e: IOException) {
|
|
||||||
Log.e("Baresip", "OutputStream exception: " + e.toString())
|
|
||||||
e.printStackTrace()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun restoreMessages(path: String = filesPath) {
|
|
||||||
val file = File(path, "messages")
|
|
||||||
if (file.exists()) {
|
|
||||||
try {
|
|
||||||
val fis = FileInputStream(file)
|
|
||||||
val ois = ObjectInputStream(fis)
|
|
||||||
Message.messages(ois.readObject() as ArrayList<Message>)
|
|
||||||
ois.close()
|
|
||||||
fis.close()
|
|
||||||
} catch (e: Exception) {
|
|
||||||
Log.e("Baresip", "InputStream exception: - " + e.toString())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,8 +55,8 @@ class MainActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
Log.d("Baresip", "Main created with action " +
|
val intentAction = intent.getStringExtra("action")
|
||||||
intent.getStringExtra("action"))
|
Log.d("Baresip", "Main created with action '$intentAction'")
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
||||||
setShowWhenLocked(true)
|
setShowWhenLocked(true)
|
||||||
@@ -102,9 +102,9 @@ class MainActivity : AppCompatActivity() {
|
|||||||
IntentFilter("service event"))
|
IntentFilter("service event"))
|
||||||
|
|
||||||
stopState = "initial"
|
stopState = "initial"
|
||||||
quitTimer = object: CountDownTimer(5000, 1000) {
|
quitTimer = object : CountDownTimer(5000, 1000) {
|
||||||
override fun onTick(millisUntilFinished: Long) {
|
override fun onTick(millisUntilFinished: Long) {
|
||||||
Log.d("Baresip", "Seconds remaining: ${millisUntilFinished/1000}")
|
Log.d("Baresip", "Seconds remaining: ${millisUntilFinished / 1000}")
|
||||||
}
|
}
|
||||||
override fun onFinish() {
|
override fun onFinish() {
|
||||||
when (stopState) {
|
when (stopState) {
|
||||||
@@ -191,11 +191,11 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
callUri.setAdapter(ArrayAdapter(this, android.R.layout.select_dialog_item,
|
callUri.setAdapter(ArrayAdapter(this, android.R.layout.select_dialog_item,
|
||||||
Contact.contacts().map{Contact -> Contact.name}))
|
Contact.contacts().map { Contact -> Contact.name }))
|
||||||
callUri.threshold = 2
|
callUri.threshold = 2
|
||||||
callUri.setOnFocusChangeListener { view, b ->
|
callUri.setOnFocusChangeListener { view, b ->
|
||||||
if (b) imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
|
if (b) imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
|
||||||
}
|
}
|
||||||
|
|
||||||
securityButton.setOnClickListener {
|
securityButton.setOnClickListener {
|
||||||
when (securityButton.tag) {
|
when (securityButton.tag) {
|
||||||
@@ -249,7 +249,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!Utils.checkSipUri(uri))
|
if (!Utils.checkSipUri(uri))
|
||||||
Utils.alertView(this,"Notice","Invalid SIP URI '$uri'")
|
Utils.alertView(this, "Notice", "Invalid SIP URI '$uri'")
|
||||||
else
|
else
|
||||||
call(ua, uri, "outgoing")
|
call(ua, uri, "outgoing")
|
||||||
} else {
|
} else {
|
||||||
@@ -276,7 +276,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
answerButton.setOnClickListener {
|
answerButton.setOnClickListener {
|
||||||
val ua = UserAgent.uas()[aorSpinner.selectedItemPosition]
|
val ua = UserAgent.uas()[aorSpinner.selectedItemPosition]
|
||||||
val aor = ua.account.aor
|
val aor = ua.account.aor
|
||||||
val callp = Call.uaCalls(ua,"in")[0].callp
|
val callp = Call.uaCalls(ua, "in")[0].callp
|
||||||
Log.d("Baresip", "AoR $aor answering call $callp from ${callUri.text}")
|
Log.d("Baresip", "AoR $aor answering call $callp from ${callUri.text}")
|
||||||
answerButton.isEnabled = false
|
answerButton.isEnabled = false
|
||||||
Api.ua_answer(ua.uap, callp)
|
Api.ua_answer(ua.uap, callp)
|
||||||
@@ -285,7 +285,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
rejectButton.setOnClickListener {
|
rejectButton.setOnClickListener {
|
||||||
val ua = UserAgent.uas()[aorSpinner.selectedItemPosition]
|
val ua = UserAgent.uas()[aorSpinner.selectedItemPosition]
|
||||||
val aor = ua.account.aor
|
val aor = ua.account.aor
|
||||||
val callp = Call.uaCalls(ua,"in")[0].callp
|
val callp = Call.uaCalls(ua, "in")[0].callp
|
||||||
Log.d("Baresip", "AoR $aor rejecting call $callp from ${callUri.text}")
|
Log.d("Baresip", "AoR $aor rejecting call $callp from ${callUri.text}")
|
||||||
rejectButton.isEnabled = false
|
rejectButton.isEnabled = false
|
||||||
Api.ua_hangup(ua.uap, callp, 486, "Rejected")
|
Api.ua_hangup(ua.uap, callp, 486, "Rejected")
|
||||||
@@ -294,7 +294,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
holdButton.setOnClickListener {
|
holdButton.setOnClickListener {
|
||||||
val ua = UserAgent.uas()[aorSpinner.selectedItemPosition]
|
val ua = UserAgent.uas()[aorSpinner.selectedItemPosition]
|
||||||
val aor = ua.account.aor
|
val aor = ua.account.aor
|
||||||
val call = Call.uaCalls(ua,"")[0]
|
val call = Call.uaCalls(ua, "")[0]
|
||||||
if (call.onhold) {
|
if (call.onhold) {
|
||||||
Log.d("Baresip", "AoR $aor resuming call ${call.callp} with ${callUri.text}")
|
Log.d("Baresip", "AoR $aor resuming call ${call.callp} with ${callUri.text}")
|
||||||
Api.call_unhold(call.callp)
|
Api.call_unhold(call.callp)
|
||||||
@@ -310,7 +310,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
infoButton.setOnClickListener {
|
infoButton.setOnClickListener {
|
||||||
val ua = UserAgent.uas()[aorSpinner.selectedItemPosition]
|
val ua = UserAgent.uas()[aorSpinner.selectedItemPosition]
|
||||||
val calls = Call.uaCalls(ua,"")
|
val calls = Call.uaCalls(ua, "")
|
||||||
if (calls.size > 0) {
|
if (calls.size > 0) {
|
||||||
val status = Api.call_status(calls[0].callp)
|
val status = Api.call_status(calls[0].callp)
|
||||||
val codecs = Api.call_audio_codecs(calls[0].callp)
|
val codecs = Api.call_audio_codecs(calls[0].callp)
|
||||||
@@ -371,20 +371,22 @@ class MainActivity : AppCompatActivity() {
|
|||||||
startActivityForResult(i, CONTACTS_CODE)
|
startActivityForResult(i, CONTACTS_CODE)
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatsActivity.restoreMessages(applicationContext.filesDir.absolutePath)
|
if (intentAction == null)
|
||||||
|
Message.restoreMessages(applicationContext.filesDir.absolutePath)
|
||||||
messagesButton.setOnClickListener {
|
messagesButton.setOnClickListener {
|
||||||
if (aorSpinner.selectedItemPosition >= 0) {
|
if (aorSpinner.selectedItemPosition >= 0) {
|
||||||
val i = Intent(this@MainActivity, ChatsActivity::class.java)
|
val i = Intent(this@MainActivity, ChatsActivity::class.java)
|
||||||
val b = Bundle()
|
val b = Bundle()
|
||||||
b.putString("aor", UserAgent.uas()[aorSpinner.selectedItemPosition].account.aor)
|
b.putString("aor", UserAgent.uas()[aorSpinner.selectedItemPosition].account.aor)
|
||||||
b.putString("peer", "")
|
b.putString("peer", resumeUri)
|
||||||
b.putBoolean("focus", false)
|
b.putBoolean("focus", resumeUri != "")
|
||||||
i.putExtras(b)
|
i.putExtras(b)
|
||||||
startActivityForResult(i, MESSAGES_CODE)
|
startActivityForResult(i, MESSAGES_CODE)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CallHistory.restore(applicationContext.filesDir.absolutePath)
|
if (intentAction == null)
|
||||||
|
CallHistory.restore(applicationContext.filesDir.absolutePath)
|
||||||
callsButton.setOnClickListener {
|
callsButton.setOnClickListener {
|
||||||
if (aorSpinner.selectedItemPosition >= 0) {
|
if (aorSpinner.selectedItemPosition >= 0) {
|
||||||
val i = Intent(this@MainActivity, CallsActivity::class.java)
|
val i = Intent(this@MainActivity, CallsActivity::class.java)
|
||||||
@@ -477,7 +479,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
resumeCall = call
|
resumeCall = call
|
||||||
resumeUri = intent.getStringExtra("uri")
|
resumeUri = intent.getStringExtra("uri")
|
||||||
}
|
}
|
||||||
"message show", "message reply" -> {
|
"message", "message show", "message reply" -> {
|
||||||
val uap = intent.getStringExtra("uap")
|
val uap = intent.getStringExtra("uap")
|
||||||
val ua = UserAgent.find(uap)
|
val ua = UserAgent.find(uap)
|
||||||
if (ua == null) {
|
if (ua == null) {
|
||||||
@@ -488,7 +490,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
spinToAor(ua.account.aor)
|
spinToAor(ua.account.aor)
|
||||||
resumeAction = action
|
resumeAction = action
|
||||||
resumeUap = uap
|
resumeUap = uap
|
||||||
resumeTime = intent.getStringExtra("time")
|
resumeUri = intent.getStringExtra("peer")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -514,8 +516,11 @@ class MainActivity : AppCompatActivity() {
|
|||||||
"transfer show", "transfer accept" ->
|
"transfer show", "transfer accept" ->
|
||||||
handleServiceEvent("$resumeAction,$resumeUri",
|
handleServiceEvent("$resumeAction,$resumeUri",
|
||||||
arrayListOf(resumeCall!!.ua.uap, resumeCall!!.callp))
|
arrayListOf(resumeCall!!.ua.uap, resumeCall!!.callp))
|
||||||
|
"message" -> {
|
||||||
|
messagesButton.performClick()
|
||||||
|
}
|
||||||
"message show", "message reply" ->
|
"message show", "message reply" ->
|
||||||
handleServiceEvent(resumeAction, arrayListOf(resumeUap, resumeTime))
|
handleServiceEvent(resumeAction, arrayListOf(resumeUap, resumeUri))
|
||||||
else -> {
|
else -> {
|
||||||
if ((aorSpinner.selectedItemPosition == -1) && (UserAgent.uas().size > 0))
|
if ((aorSpinner.selectedItemPosition == -1) && (UserAgent.uas().size > 0))
|
||||||
aorSpinner.setSelection(0)
|
aorSpinner.setSelection(0)
|
||||||
@@ -524,6 +529,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
resumeAction = ""
|
resumeAction = ""
|
||||||
|
resumeUri = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
@@ -769,13 +775,8 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
"message show", "message reply" -> {
|
"message show", "message reply" -> {
|
||||||
val timeStamp = params[1].toLong()
|
val peer = params[1]
|
||||||
val msg = ChatsActivity.findUaMessage(ua.account.aor, timeStamp)
|
Log.d("Baresip", "Message for $aor from $peer")
|
||||||
if (msg == null) {
|
|
||||||
Log.w("Baresip", "Message ${ua.uap}/$timeStamp is not found")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
Log.d("Baresip", "Message for $aor from ${msg.peerUri}")
|
|
||||||
if ((aorSpinner.selectedItemPosition == -1) ||
|
if ((aorSpinner.selectedItemPosition == -1) ||
|
||||||
(ua != UserAgent.uas()[aorSpinner.selectedItemPosition]))
|
(ua != UserAgent.uas()[aorSpinner.selectedItemPosition]))
|
||||||
aorSpinner.setSelection(account_index)
|
aorSpinner.setSelection(account_index)
|
||||||
@@ -783,7 +784,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
|
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
|
||||||
val b = Bundle()
|
val b = Bundle()
|
||||||
b.putString("aor", aor)
|
b.putString("aor", aor)
|
||||||
b.putString("peer", msg.peerUri)
|
b.putString("peer", peer)
|
||||||
b.putBoolean("focus", ev[0] == "message reply")
|
b.putBoolean("focus", ev[0] == "message reply")
|
||||||
i.putExtras(b)
|
i.putExtras(b)
|
||||||
startActivity(i)
|
startActivity(i)
|
||||||
|
|||||||
@@ -15,10 +15,6 @@ class Message(val aor: String, val peerUri: String, val message: String, val tim
|
|||||||
return BaresipService.messages
|
return BaresipService.messages
|
||||||
}
|
}
|
||||||
|
|
||||||
fun messages(messages: ArrayList<Message>) {
|
|
||||||
BaresipService.messages = messages
|
|
||||||
}
|
|
||||||
|
|
||||||
fun add(message: Message) {
|
fun add(message: Message) {
|
||||||
BaresipService.messages.add(message)
|
BaresipService.messages.add(message)
|
||||||
var count = 0
|
var count = 0
|
||||||
@@ -35,5 +31,37 @@ class Message(val aor: String, val peerUri: String, val message: String, val tim
|
|||||||
BaresipService.messages.removeAt(firstIndex)
|
BaresipService.messages.removeAt(firstIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun saveMessages(path: String) {
|
||||||
|
val file = File(path, "messages")
|
||||||
|
try {
|
||||||
|
val fos = FileOutputStream(file)
|
||||||
|
val oos = ObjectOutputStream(fos)
|
||||||
|
oos.writeObject(BaresipService.messages)
|
||||||
|
oos.close()
|
||||||
|
fos.close()
|
||||||
|
Log.d("Baresip", "Saved ${BaresipService.messages.size} messages")
|
||||||
|
} catch (e: IOException) {
|
||||||
|
Log.e("Baresip", "OutputStream exception: " + e.toString())
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun restoreMessages(path: String) {
|
||||||
|
val file = File(path, "messages")
|
||||||
|
if (file.exists()) {
|
||||||
|
try {
|
||||||
|
val fis = FileInputStream(file)
|
||||||
|
val ois = ObjectInputStream(fis)
|
||||||
|
BaresipService.messages = ois.readObject() as ArrayList<Message>
|
||||||
|
ois.close()
|
||||||
|
fis.close()
|
||||||
|
Log.d("Baresip", "Restored ${BaresipService.messages.size} messages")
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.e("Baresip", "InputStream exception: - " + e.toString())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,10 +63,8 @@ class MessageListAdapter(private val cxt: Context, private val rows: ArrayList<M
|
|||||||
}
|
}
|
||||||
val textView = messageView.findViewById(R.id.text) as TextView
|
val textView = messageView.findViewById(R.id.text) as TextView
|
||||||
textView.text = message.message
|
textView.text = message.message
|
||||||
if (message.new) {
|
if (message.new)
|
||||||
textView.setTypeface(null, Typeface.BOLD)
|
textView.setTypeface(null, Typeface.BOLD)
|
||||||
message.new = false
|
|
||||||
}
|
|
||||||
return messageView
|
return messageView
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user