【Android】起動時に流れた音楽を、アプリ終了まで流し続けたい
Discussion
解決したいこと
AndroidStudioでAndroidアプリを開発しています。
起動時に流れた音楽を、アプリ終了まで流し続けたいのですがプログラムの都合上止まってしまいます。
解決方法を教えてください。
使用環境
Android Studio Chipmunk | 2021.2.1 Patch 1
Kotlin 1.7.0
macOS monterey 12.4
発生している問題・エラー
実現したいことは以下の2つです。
・起動時に流れ始めた音楽を他のActivityに移動したとしても流れ続けてほしい
・Pouse画面やスマホのホーム画面に移動した時に音楽は止まってほしい
以下に記述するソースコードの中でも各ライフサイクルで再生・停止・終了を
いじっているのが原因だと考えています。
これら二つの条件を実現するための方法を教えていただきたいです。
該当するソースコード
class MainActivity : AppCompatActivity() {
private lateinit var mp:MediaPlayer
// Activityの生成
@RequiresApi(Build.VERSION_CODES.O)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 変数宣言
val btnNewPoint : ImageButton = findViewById(R.id.btnNewPoint)
val btnCity : ImageButton = findViewById(R.id.btnCity)
val btnDetail : ImageButton = findViewById(R.id.btnDetail)
val btnhelp : Button = findViewById(R.id.btnhelp)
// 曲を流す
mp = MediaPlayer.create(this,R.raw.sample)
mp.isLooping = true
mp.start()
// 「新規地点登録」を押した時
btnNewPoint.setOnClickListener {
// "NewPoint.kt"に画面遷移
intent = Intent(this, NewPoint::class.java)
startActivity(intent)
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
}
// 「登録地点」を押した時
btnCity.setOnClickListener {
// "RegisterCity.kt"に画面遷移
intent = Intent(this, RegisterCity::class.java)
startActivity(intent)
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
}
// 「詳細」を押した時
btnDetail.setOnClickListener {
// "Detail.kt"に画面遷移
intent = Intent(this, Detail::class.java)
startActivity(intent)
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
}
btnhelp.setOnClickListener {
// btnhelp.visibility = View.INVISIBLE
supportFragmentManager.beginTransaction()
.replace(R.id.fl,HelpFragment.newInstance())
.commit()
}
// アプリを落としても表示画面外で動き続けるための処理(フォアグラウンド処理)
// フォアグラウンド処理(アプリ)の実行命令("GetttingWeatherInformationService.kt"に遷移)
val intentService = Intent(this,GetttingWeatherInformationService::class.java)
startForegroundService(intentService)
}
override fun onResume() {
super.onResume()
mp.start()
}
override fun onPause() {
super.onPause()
mp.pause()
}
override fun onDestroy() {
super.onDestroy()
mp.stop()
mp.release()
}
override fun finish() {
super.finish()
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
}
}
自分で試したこと
以下のサイトを参考に音楽の再生などのコードを書きました
0