Android: Add system menu items for switching FM / MIDI

This commit is contained in:
kichikuou
2020-11-29 18:27:53 +09:00
parent 602c309c47
commit c575fb303f
6 changed files with 50 additions and 4 deletions
@@ -43,6 +43,7 @@ class GameActivity : SDLActivity() {
private lateinit var gameRoot: File
private lateinit var cdda: CddaPlayer
private val midi = MidiPlayer()
private var useFM = true
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -70,7 +71,8 @@ class GameActivity : SDLActivity() {
override fun getArguments(): Array<String> {
return arrayOf(
"-gamedir", intent.getStringExtra(EXTRA_GAME_ROOT),
"-savedir", intent.getStringExtra(EXTRA_SAVE_DIR) + "/@")
"-savedir", intent.getStringExtra(EXTRA_SAVE_DIR) + "/@",
"-fm")
}
override fun setTitle(title: CharSequence?) {
@@ -110,9 +112,10 @@ class GameActivity : SDLActivity() {
menuShown = true
}
override fun onCreateContextMenu(menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo?) {
override fun onCreateContextMenu(menu: ContextMenu, v: View?, menuInfo: ContextMenu.ContextMenuInfo?) {
super.onCreateContextMenu(menu, v, menuInfo)
menuInflater.inflate(R.menu.game_menu, menu)
menu.findItem(if (useFM) R.id.fm_sound else R.id.midi_sound).isChecked = true
}
override fun onContextItemSelected(item: MenuItem): Boolean {
@@ -121,6 +124,16 @@ class GameActivity : SDLActivity() {
finish()
true
}
R.id.fm_sound -> {
selectSynthesizer(true)
useFM = true
true
}
R.id.midi_sound -> {
selectSynthesizer(false)
useFM = false
true
}
else -> super.onOptionsItemSelected(item)
}
}
@@ -130,6 +143,9 @@ class GameActivity : SDLActivity() {
menuShown = false
}
// C functions we call
private external fun selectSynthesizer(use_fm: Boolean)
// The functions below are called in the SDL thread by JNI.
@Suppress("unused") fun cddaStart(track: Int, loop: Boolean) = cdda.start(track, loop)
@Suppress("unused") fun cddaStop() = cdda.stop()