====== サービスからActivityへ連携する ======
[[https://oc-technote.com/android/service%E3%81%8B%E3%82%89activity%E3%81%AB%E5%80%A4%E3%82%92%E6%8A%95%E3%81%92%E3%81%9F%E3%82%8A%E7%94%BB%E9%9D%A2%E3%82%92%E6%9B%B4%E6%96%B0%E3%81%97%E3%81%9F%E3%82%8A%E3%81%99%E3%82%8B%E6%96%B9/|ServiceからActivityに値を投げたり画面を更新したりする方法]]
[[https://sites.google.com/site/androiddevnote/20-zhong-ji/service-to-activity|ServiceからActivityへ情報を渡す]]
broadcastを使ったデータ連携方法
受け側のActivity
override fun onCreate(savedInstanceState: Bundle?) {
...
// receiverを登録する
val receiver =object: BroadcastReceiver(){
override fun onReceive(context: Context, intent: Intent) {
val extras = intent.extras
val msg = extras!!.getString("message")
~すきな処理~
}
}
...
}
送り側のサービス
...
// onLocationChangedイベントでActivityへ通知
inner class GPSLocationListener: LocationListener {
override fun onLocationChanged(p0: Location?) {
val format = SimpleDateFormat("kk:mm:ss")
val msg="${format.format(Date())} lat:${p0?.latitude} lon:${p0?.longitude}"
Log.d("locCheck",msg)
sendMessage(msg);
}
...
}
// Broadcastメイン
fun sendMessage(msg: String) {
val broadcast = Intent()
broadcast.putExtra("message", msg)
broadcast.action = "DO_ACTION"
baseContext.sendBroadcast(broadcast)
}