summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt15
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt43
-rw-r--r--src/android/app/src/main/jni/CMakeLists.txt1
-rw-r--r--src/android/app/src/main/jni/native.cpp150
-rw-r--r--src/android/app/src/main/jni/native.h165
-rw-r--r--src/android/app/src/main/res/drawable/ic_pip_sound.xml (renamed from src/android/app/src/main/res/drawable/ic_pip_audio.xml)0
-rw-r--r--src/android/app/src/main/res/values/strings.xml2
7 files changed, 99 insertions, 277 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt
index f860cdd4b..6a4e07046 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt
@@ -314,6 +314,21 @@ object NativeLibrary {
314 external fun isPaused(): Boolean 314 external fun isPaused(): Boolean
315 315
316 /** 316 /**
317 * Mutes emulation sound
318 */
319 external fun muteAudio(): Boolean
320
321 /**
322 * Unmutes emulation sound
323 */
324 external fun unMuteAudio(): Boolean
325
326 /**
327 * Returns true if emulation audio is muted.
328 */
329 external fun isMuted(): Boolean
330
331 /**
317 * Returns the performance stats for the current game 332 * Returns the performance stats for the current game
318 */ 333 */
319 external fun getPerfStats(): DoubleArray 334 external fun getPerfStats(): DoubleArray
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt
index 8a071f4da..b77c21380 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.kt
@@ -64,9 +64,7 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
64 private val actionPause = "ACTION_EMULATOR_PAUSE" 64 private val actionPause = "ACTION_EMULATOR_PAUSE"
65 private val actionPlay = "ACTION_EMULATOR_PLAY" 65 private val actionPlay = "ACTION_EMULATOR_PLAY"
66 private val actionMute = "ACTION_EMULATOR_MUTE" 66 private val actionMute = "ACTION_EMULATOR_MUTE"
67 private val actionAudio = "ACTION_EMULATOR_AUDIO" 67 private val actionSound = "ACTION_EMULATOR_SOUND"
68 private var isAudioMuted = false
69 private var userAudio = IntSetting.AUDIO_VOLUME.int
70 68
71 private val settingsViewModel: SettingsViewModel by viewModels() 69 private val settingsViewModel: SettingsViewModel by viewModels()
72 70
@@ -309,21 +307,21 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
309 pictureInPictureActions.add(pauseRemoteAction) 307 pictureInPictureActions.add(pauseRemoteAction)
310 } 308 }
311 309
312 if (isAudioMuted) { 310 if (NativeLibrary.isMuted()) {
313 val audioIcon = Icon.createWithResource(this@EmulationActivity, R.drawable.ic_pip_audio) 311 val soundIcon = Icon.createWithResource(this@EmulationActivity, R.drawable.ic_pip_sound)
314 val audioPendingIntent = PendingIntent.getBroadcast( 312 val soundPendingIntent = PendingIntent.getBroadcast(
315 this@EmulationActivity, 313 this@EmulationActivity,
316 R.drawable.ic_pip_audio, 314 R.drawable.ic_pip_sound,
317 Intent(actionAudio), 315 Intent(actionSound),
318 pendingFlags 316 pendingFlags
319 ) 317 )
320 val audioRemoteAction = RemoteAction( 318 val soundRemoteAction = RemoteAction(
321 audioIcon, 319 soundIcon,
322 getString(R.string.audio), 320 getString(R.string.sound),
323 getString(R.string.audio), 321 getString(R.string.sound),
324 audioPendingIntent 322 soundPendingIntent
325 ) 323 )
326 pictureInPictureActions.add(audioRemoteAction) 324 pictureInPictureActions.add(soundRemoteAction)
327 } else { 325 } else {
328 val muteIcon = Icon.createWithResource(this@EmulationActivity, R.drawable.ic_pip_mute) 326 val muteIcon = Icon.createWithResource(this@EmulationActivity, R.drawable.ic_pip_mute)
329 val mutePendingIntent = PendingIntent.getBroadcast( 327 val mutePendingIntent = PendingIntent.getBroadcast(
@@ -362,17 +360,10 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
362 } else if (intent.action == actionPause) { 360 } else if (intent.action == actionPause) {
363 if (!NativeLibrary.isPaused()) NativeLibrary.pauseEmulation() 361 if (!NativeLibrary.isPaused()) NativeLibrary.pauseEmulation()
364 } 362 }
365 if (intent.action == actionAudio) { 363 if (intent.action == actionSound) {
366 if (isAudioMuted) { 364 if (NativeLibrary.isMuted()) NativeLibrary.unMuteAudio()
367 IntSetting.AUDIO_VOLUME.int = userAudio
368 isAudioMuted = false
369 }
370 } else if (intent.action == actionMute) { 365 } else if (intent.action == actionMute) {
371 if (!isAudioMuted) { 366 if (!NativeLibrary.isMuted()) NativeLibrary.muteAudio()
372 isAudioMuted = true
373 userAudio = IntSetting.AUDIO_VOLUME.int
374 IntSetting.AUDIO_VOLUME.int = 0
375 }
376 } 367 }
377 buildPictureInPictureParams() 368 buildPictureInPictureParams()
378 } 369 }
@@ -387,6 +378,8 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
387 IntentFilter().apply { 378 IntentFilter().apply {
388 addAction(actionPause) 379 addAction(actionPause)
389 addAction(actionPlay) 380 addAction(actionPlay)
381 addAction(actionMute)
382 addAction(actionSound)
390 }.also { 383 }.also {
391 registerReceiver(pictureInPictureReceiver, it) 384 registerReceiver(pictureInPictureReceiver, it)
392 } 385 }
@@ -395,6 +388,8 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
395 unregisterReceiver(pictureInPictureReceiver) 388 unregisterReceiver(pictureInPictureReceiver)
396 } catch (ignored: Exception) { 389 } catch (ignored: Exception) {
397 } 390 }
391 // Always resume audio, since there is no UI button
392 if (NativeLibrary.isMuted()) NativeLibrary.unMuteAudio()
398 } 393 }
399 } 394 }
400 395
diff --git a/src/android/app/src/main/jni/CMakeLists.txt b/src/android/app/src/main/jni/CMakeLists.txt
index 041781577..e2ed08e9f 100644
--- a/src/android/app/src/main/jni/CMakeLists.txt
+++ b/src/android/app/src/main/jni/CMakeLists.txt
@@ -14,7 +14,6 @@ add_library(yuzu-android SHARED
14 id_cache.cpp 14 id_cache.cpp
15 id_cache.h 15 id_cache.h
16 native.cpp 16 native.cpp
17 native.h
18) 17)
19 18
20set_property(TARGET yuzu-android PROPERTY IMPORTED_LOCATION ${FFmpeg_LIBRARY_DIR}) 19set_property(TARGET yuzu-android PROPERTY IMPORTED_LOCATION ${FFmpeg_LIBRARY_DIR})
diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp
index 632aa50b3..07c2a7850 100644
--- a/src/android/app/src/main/jni/native.cpp
+++ b/src/android/app/src/main/jni/native.cpp
@@ -14,6 +14,7 @@
14#include <android/api-level.h> 14#include <android/api-level.h>
15#include <android/native_window_jni.h> 15#include <android/native_window_jni.h>
16#include <core/loader/nro.h> 16#include <core/loader/nro.h>
17#include <jni.h>
17 18
18#include "common/detached_tasks.h" 19#include "common/detached_tasks.h"
19#include "common/dynamic_library.h" 20#include "common/dynamic_library.h"
@@ -526,35 +527,32 @@ static Core::SystemResultStatus RunEmulation(const std::string& filepath) {
526 527
527extern "C" { 528extern "C" {
528 529
529void Java_org_yuzu_yuzu_1emu_NativeLibrary_surfaceChanged(JNIEnv* env, 530void Java_org_yuzu_yuzu_1emu_NativeLibrary_surfaceChanged(JNIEnv* env, jclass clazz, jobject surf) {
530 [[maybe_unused]] jclass clazz,
531 jobject surf) {
532 EmulationSession::GetInstance().SetNativeWindow(ANativeWindow_fromSurface(env, surf)); 531 EmulationSession::GetInstance().SetNativeWindow(ANativeWindow_fromSurface(env, surf));
533 EmulationSession::GetInstance().SurfaceChanged(); 532 EmulationSession::GetInstance().SurfaceChanged();
534} 533}
535 534
536void Java_org_yuzu_yuzu_1emu_NativeLibrary_surfaceDestroyed(JNIEnv* env, 535void Java_org_yuzu_yuzu_1emu_NativeLibrary_surfaceDestroyed(JNIEnv* env, jclass clazz) {
537 [[maybe_unused]] jclass clazz) {
538 ANativeWindow_release(EmulationSession::GetInstance().NativeWindow()); 536 ANativeWindow_release(EmulationSession::GetInstance().NativeWindow());
539 EmulationSession::GetInstance().SetNativeWindow(nullptr); 537 EmulationSession::GetInstance().SetNativeWindow(nullptr);
540 EmulationSession::GetInstance().SurfaceChanged(); 538 EmulationSession::GetInstance().SurfaceChanged();
541} 539}
542 540
543void Java_org_yuzu_yuzu_1emu_NativeLibrary_setAppDirectory(JNIEnv* env, 541void Java_org_yuzu_yuzu_1emu_NativeLibrary_setAppDirectory(JNIEnv* env, jclass clazz,
544 [[maybe_unused]] jclass clazz,
545 jstring j_directory) { 542 jstring j_directory) {
546 Common::FS::SetAppDirectory(GetJString(env, j_directory)); 543 Common::FS::SetAppDirectory(GetJString(env, j_directory));
547} 544}
548 545
549int Java_org_yuzu_yuzu_1emu_NativeLibrary_installFileToNand(JNIEnv* env, 546int Java_org_yuzu_yuzu_1emu_NativeLibrary_installFileToNand(JNIEnv* env, jclass clazz,
550 [[maybe_unused]] jclass clazz,
551 jstring j_file) { 547 jstring j_file) {
552 return EmulationSession::GetInstance().InstallFileToNand(GetJString(env, j_file)); 548 return EmulationSession::GetInstance().InstallFileToNand(GetJString(env, j_file));
553} 549}
554 550
555void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_initializeGpuDriver( 551void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_initializeGpuDriver(JNIEnv* env, jclass clazz,
556 JNIEnv* env, [[maybe_unused]] jclass clazz, jstring hook_lib_dir, jstring custom_driver_dir, 552 jstring hook_lib_dir,
557 jstring custom_driver_name, jstring file_redirect_dir) { 553 jstring custom_driver_dir,
554 jstring custom_driver_name,
555 jstring file_redirect_dir) {
558 EmulationSession::GetInstance().InitializeGpuDriver( 556 EmulationSession::GetInstance().InitializeGpuDriver(
559 GetJString(env, hook_lib_dir), GetJString(env, custom_driver_dir), 557 GetJString(env, hook_lib_dir), GetJString(env, custom_driver_dir),
560 GetJString(env, custom_driver_name), GetJString(env, file_redirect_dir)); 558 GetJString(env, custom_driver_name), GetJString(env, file_redirect_dir));
@@ -571,7 +569,7 @@ void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_initializeGpuDriver(
571} 569}
572 570
573jboolean JNICALL Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_supportsCustomDriverLoading( 571jboolean JNICALL Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_supportsCustomDriverLoading(
574 [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jobject instance) { 572 JNIEnv* env, [[maybe_unused]] jobject instance) {
575#ifdef ARCHITECTURE_arm64 573#ifdef ARCHITECTURE_arm64
576 // If the KGSL device exists custom drivers can be loaded using adrenotools 574 // If the KGSL device exists custom drivers can be loaded using adrenotools
577 return SupportsCustomDriver(); 575 return SupportsCustomDriver();
@@ -580,49 +578,52 @@ jboolean JNICALL Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_supportsCustomDri
580#endif 578#endif
581} 579}
582 580
583jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_reloadKeys(JNIEnv* env, 581jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_reloadKeys(JNIEnv* env, jclass clazz) {
584 [[maybe_unused]] jclass clazz) {
585 Core::Crypto::KeyManager::Instance().ReloadKeys(); 582 Core::Crypto::KeyManager::Instance().ReloadKeys();
586 return static_cast<jboolean>(Core::Crypto::KeyManager::Instance().AreKeysLoaded()); 583 return static_cast<jboolean>(Core::Crypto::KeyManager::Instance().AreKeysLoaded());
587} 584}
588 585
589void Java_org_yuzu_yuzu_1emu_NativeLibrary_unPauseEmulation([[maybe_unused]] JNIEnv* env, 586void Java_org_yuzu_yuzu_1emu_NativeLibrary_unPauseEmulation(JNIEnv* env, jclass clazz) {
590 [[maybe_unused]] jclass clazz) {
591 EmulationSession::GetInstance().UnPauseEmulation(); 587 EmulationSession::GetInstance().UnPauseEmulation();
592} 588}
593 589
594void Java_org_yuzu_yuzu_1emu_NativeLibrary_pauseEmulation([[maybe_unused]] JNIEnv* env, 590void Java_org_yuzu_yuzu_1emu_NativeLibrary_pauseEmulation(JNIEnv* env, jclass clazz) {
595 [[maybe_unused]] jclass clazz) {
596 EmulationSession::GetInstance().PauseEmulation(); 591 EmulationSession::GetInstance().PauseEmulation();
597} 592}
598 593
599void Java_org_yuzu_yuzu_1emu_NativeLibrary_stopEmulation([[maybe_unused]] JNIEnv* env, 594void Java_org_yuzu_yuzu_1emu_NativeLibrary_stopEmulation(JNIEnv* env, jclass clazz) {
600 [[maybe_unused]] jclass clazz) {
601 EmulationSession::GetInstance().HaltEmulation(); 595 EmulationSession::GetInstance().HaltEmulation();
602} 596}
603 597
604void Java_org_yuzu_yuzu_1emu_NativeLibrary_resetRomMetadata([[maybe_unused]] JNIEnv* env, 598void Java_org_yuzu_yuzu_1emu_NativeLibrary_resetRomMetadata(JNIEnv* env, jclass clazz) {
605 [[maybe_unused]] jclass clazz) {
606 EmulationSession::GetInstance().ResetRomMetadata(); 599 EmulationSession::GetInstance().ResetRomMetadata();
607} 600}
608 601
609jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_isRunning([[maybe_unused]] JNIEnv* env, 602jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_isRunning(JNIEnv* env, jclass clazz) {
610 [[maybe_unused]] jclass clazz) {
611 return static_cast<jboolean>(EmulationSession::GetInstance().IsRunning()); 603 return static_cast<jboolean>(EmulationSession::GetInstance().IsRunning());
612} 604}
613 605
614jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_isPaused([[maybe_unused]] JNIEnv* env, 606jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_isPaused(JNIEnv* env, jclass clazz) {
615 [[maybe_unused]] jclass clazz) {
616 return static_cast<jboolean>(EmulationSession::GetInstance().IsPaused()); 607 return static_cast<jboolean>(EmulationSession::GetInstance().IsPaused());
617} 608}
618 609
619jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_isHandheldOnly([[maybe_unused]] JNIEnv* env, 610void Java_org_yuzu_yuzu_1emu_NativeLibrary_muteAduio(JNIEnv* env, jclass clazz) {
620 [[maybe_unused]] jclass clazz) { 611 Settings::values.audio_muted = true;
612}
613
614void Java_org_yuzu_yuzu_1emu_NativeLibrary_unMuteAudio(JNIEnv* env, jclass clazz) {
615 Settings::values.audio_muted = false;
616}
617
618jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_isMuted(JNIEnv* env, jclass clazz) {
619 return static_cast<jboolean>(Settings::values.audio_muted.GetValue());
620}
621
622jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_isHandheldOnly(JNIEnv* env, jclass clazz) {
621 return EmulationSession::GetInstance().IsHandheldOnly(); 623 return EmulationSession::GetInstance().IsHandheldOnly();
622} 624}
623 625
624jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_setDeviceType([[maybe_unused]] JNIEnv* env, 626jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_setDeviceType(JNIEnv* env, jclass clazz,
625 [[maybe_unused]] jclass clazz,
626 jint j_device, jint j_type) { 627 jint j_device, jint j_type) {
627 if (EmulationSession::GetInstance().IsRunning()) { 628 if (EmulationSession::GetInstance().IsRunning()) {
628 EmulationSession::GetInstance().SetDeviceType(j_device, j_type); 629 EmulationSession::GetInstance().SetDeviceType(j_device, j_type);
@@ -630,8 +631,7 @@ jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_setDeviceType([[maybe_unused]] JN
630 return static_cast<jboolean>(true); 631 return static_cast<jboolean>(true);
631} 632}
632 633
633jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadConnectEvent([[maybe_unused]] JNIEnv* env, 634jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadConnectEvent(JNIEnv* env, jclass clazz,
634 [[maybe_unused]] jclass clazz,
635 jint j_device) { 635 jint j_device) {
636 if (EmulationSession::GetInstance().IsRunning()) { 636 if (EmulationSession::GetInstance().IsRunning()) {
637 EmulationSession::GetInstance().OnGamepadConnectEvent(j_device); 637 EmulationSession::GetInstance().OnGamepadConnectEvent(j_device);
@@ -639,15 +639,14 @@ jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadConnectEvent([[maybe_unu
639 return static_cast<jboolean>(true); 639 return static_cast<jboolean>(true);
640} 640}
641 641
642jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadDisconnectEvent( 642jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadDisconnectEvent(JNIEnv* env, jclass clazz,
643 [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jclass clazz, jint j_device) { 643 jint j_device) {
644 if (EmulationSession::GetInstance().IsRunning()) { 644 if (EmulationSession::GetInstance().IsRunning()) {
645 EmulationSession::GetInstance().OnGamepadDisconnectEvent(j_device); 645 EmulationSession::GetInstance().OnGamepadDisconnectEvent(j_device);
646 } 646 }
647 return static_cast<jboolean>(true); 647 return static_cast<jboolean>(true);
648} 648}
649jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadButtonEvent([[maybe_unused]] JNIEnv* env, 649jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadButtonEvent(JNIEnv* env, jclass clazz,
650 [[maybe_unused]] jclass clazz,
651 [[maybe_unused]] jint j_device, 650 [[maybe_unused]] jint j_device,
652 jint j_button, jint action) { 651 jint j_button, jint action) {
653 if (EmulationSession::GetInstance().IsRunning()) { 652 if (EmulationSession::GetInstance().IsRunning()) {
@@ -659,8 +658,7 @@ jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadButtonEvent([[maybe_unus
659 return static_cast<jboolean>(true); 658 return static_cast<jboolean>(true);
660} 659}
661 660
662jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadJoystickEvent([[maybe_unused]] JNIEnv* env, 661jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadJoystickEvent(JNIEnv* env, jclass clazz,
663 [[maybe_unused]] jclass clazz,
664 jint j_device, jint stick_id, 662 jint j_device, jint stick_id,
665 jfloat x, jfloat y) { 663 jfloat x, jfloat y) {
666 if (EmulationSession::GetInstance().IsRunning()) { 664 if (EmulationSession::GetInstance().IsRunning()) {
@@ -670,9 +668,8 @@ jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadJoystickEvent([[maybe_un
670} 668}
671 669
672jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadMotionEvent( 670jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadMotionEvent(
673 [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jclass clazz, jint j_device, 671 JNIEnv* env, jclass clazz, jint j_device, jlong delta_timestamp, jfloat gyro_x, jfloat gyro_y,
674 jlong delta_timestamp, jfloat gyro_x, jfloat gyro_y, jfloat gyro_z, jfloat accel_x, 672 jfloat gyro_z, jfloat accel_x, jfloat accel_y, jfloat accel_z) {
675 jfloat accel_y, jfloat accel_z) {
676 if (EmulationSession::GetInstance().IsRunning()) { 673 if (EmulationSession::GetInstance().IsRunning()) {
677 EmulationSession::GetInstance().Window().OnGamepadMotionEvent( 674 EmulationSession::GetInstance().Window().OnGamepadMotionEvent(
678 j_device, delta_timestamp, gyro_x, gyro_y, gyro_z, accel_x, accel_y, accel_z); 675 j_device, delta_timestamp, gyro_x, gyro_y, gyro_z, accel_x, accel_y, accel_z);
@@ -680,8 +677,7 @@ jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadMotionEvent(
680 return static_cast<jboolean>(true); 677 return static_cast<jboolean>(true);
681} 678}
682 679
683jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onReadNfcTag([[maybe_unused]] JNIEnv* env, 680jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onReadNfcTag(JNIEnv* env, jclass clazz,
684 [[maybe_unused]] jclass clazz,
685 jbyteArray j_data) { 681 jbyteArray j_data) {
686 jboolean isCopy{false}; 682 jboolean isCopy{false};
687 std::span<u8> data(reinterpret_cast<u8*>(env->GetByteArrayElements(j_data, &isCopy)), 683 std::span<u8> data(reinterpret_cast<u8*>(env->GetByteArrayElements(j_data, &isCopy)),
@@ -693,39 +689,34 @@ jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onReadNfcTag([[maybe_unused]] JNI
693 return static_cast<jboolean>(true); 689 return static_cast<jboolean>(true);
694} 690}
695 691
696jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onRemoveNfcTag([[maybe_unused]] JNIEnv* env, 692jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onRemoveNfcTag(JNIEnv* env, jclass clazz) {
697 [[maybe_unused]] jclass clazz) {
698 if (EmulationSession::GetInstance().IsRunning()) { 693 if (EmulationSession::GetInstance().IsRunning()) {
699 EmulationSession::GetInstance().Window().OnRemoveNfcTag(); 694 EmulationSession::GetInstance().Window().OnRemoveNfcTag();
700 } 695 }
701 return static_cast<jboolean>(true); 696 return static_cast<jboolean>(true);
702} 697}
703 698
704void Java_org_yuzu_yuzu_1emu_NativeLibrary_onTouchPressed([[maybe_unused]] JNIEnv* env, 699void Java_org_yuzu_yuzu_1emu_NativeLibrary_onTouchPressed(JNIEnv* env, jclass clazz, jint id,
705 [[maybe_unused]] jclass clazz, jint id,
706 jfloat x, jfloat y) { 700 jfloat x, jfloat y) {
707 if (EmulationSession::GetInstance().IsRunning()) { 701 if (EmulationSession::GetInstance().IsRunning()) {
708 EmulationSession::GetInstance().Window().OnTouchPressed(id, x, y); 702 EmulationSession::GetInstance().Window().OnTouchPressed(id, x, y);
709 } 703 }
710} 704}
711 705
712void Java_org_yuzu_yuzu_1emu_NativeLibrary_onTouchMoved([[maybe_unused]] JNIEnv* env, 706void Java_org_yuzu_yuzu_1emu_NativeLibrary_onTouchMoved(JNIEnv* env, jclass clazz, jint id,
713 [[maybe_unused]] jclass clazz, jint id,
714 jfloat x, jfloat y) { 707 jfloat x, jfloat y) {
715 if (EmulationSession::GetInstance().IsRunning()) { 708 if (EmulationSession::GetInstance().IsRunning()) {
716 EmulationSession::GetInstance().Window().OnTouchMoved(id, x, y); 709 EmulationSession::GetInstance().Window().OnTouchMoved(id, x, y);
717 } 710 }
718} 711}
719 712
720void Java_org_yuzu_yuzu_1emu_NativeLibrary_onTouchReleased([[maybe_unused]] JNIEnv* env, 713void Java_org_yuzu_yuzu_1emu_NativeLibrary_onTouchReleased(JNIEnv* env, jclass clazz, jint id) {
721 [[maybe_unused]] jclass clazz, jint id) {
722 if (EmulationSession::GetInstance().IsRunning()) { 714 if (EmulationSession::GetInstance().IsRunning()) {
723 EmulationSession::GetInstance().Window().OnTouchReleased(id); 715 EmulationSession::GetInstance().Window().OnTouchReleased(id);
724 } 716 }
725} 717}
726 718
727jbyteArray Java_org_yuzu_yuzu_1emu_NativeLibrary_getIcon([[maybe_unused]] JNIEnv* env, 719jbyteArray Java_org_yuzu_yuzu_1emu_NativeLibrary_getIcon(JNIEnv* env, jclass clazz,
728 [[maybe_unused]] jclass clazz,
729 [[maybe_unused]] jstring j_filename) { 720 [[maybe_unused]] jstring j_filename) {
730 auto icon_data = EmulationSession::GetInstance().GetRomIcon(GetJString(env, j_filename)); 721 auto icon_data = EmulationSession::GetInstance().GetRomIcon(GetJString(env, j_filename));
731 jbyteArray icon = env->NewByteArray(static_cast<jsize>(icon_data.size())); 722 jbyteArray icon = env->NewByteArray(static_cast<jsize>(icon_data.size()));
@@ -734,67 +725,58 @@ jbyteArray Java_org_yuzu_yuzu_1emu_NativeLibrary_getIcon([[maybe_unused]] JNIEnv
734 return icon; 725 return icon;
735} 726}
736 727
737jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getTitle([[maybe_unused]] JNIEnv* env, 728jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getTitle(JNIEnv* env, jclass clazz,
738 [[maybe_unused]] jclass clazz,
739 [[maybe_unused]] jstring j_filename) { 729 [[maybe_unused]] jstring j_filename) {
740 auto title = EmulationSession::GetInstance().GetRomTitle(GetJString(env, j_filename)); 730 auto title = EmulationSession::GetInstance().GetRomTitle(GetJString(env, j_filename));
741 return env->NewStringUTF(title.c_str()); 731 return env->NewStringUTF(title.c_str());
742} 732}
743 733
744jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getDescription([[maybe_unused]] JNIEnv* env, 734jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getDescription(JNIEnv* env, jclass clazz,
745 [[maybe_unused]] jclass clazz,
746 jstring j_filename) { 735 jstring j_filename) {
747 return j_filename; 736 return j_filename;
748} 737}
749 738
750jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getGameId([[maybe_unused]] JNIEnv* env, 739jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getGameId(JNIEnv* env, jclass clazz,
751 [[maybe_unused]] jclass clazz,
752 jstring j_filename) { 740 jstring j_filename) {
753 return j_filename; 741 return j_filename;
754} 742}
755 743
756jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getRegions([[maybe_unused]] JNIEnv* env, 744jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getRegions(JNIEnv* env, jclass clazz,
757 [[maybe_unused]] jclass clazz,
758 [[maybe_unused]] jstring j_filename) { 745 [[maybe_unused]] jstring j_filename) {
759 return env->NewStringUTF(""); 746 return env->NewStringUTF("");
760} 747}
761 748
762jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getCompany([[maybe_unused]] JNIEnv* env, 749jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getCompany(JNIEnv* env, jclass clazz,
763 [[maybe_unused]] jclass clazz,
764 [[maybe_unused]] jstring j_filename) { 750 [[maybe_unused]] jstring j_filename) {
765 return env->NewStringUTF(""); 751 return env->NewStringUTF("");
766} 752}
767 753
768jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_isHomebrew([[maybe_unused]] JNIEnv* env, 754jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_isHomebrew(JNIEnv* env, jclass clazz,
769 [[maybe_unused]] jclass clazz,
770 [[maybe_unused]] jstring j_filename) { 755 [[maybe_unused]] jstring j_filename) {
771 return EmulationSession::GetInstance().GetIsHomebrew(GetJString(env, j_filename)); 756 return EmulationSession::GetInstance().GetIsHomebrew(GetJString(env, j_filename));
772} 757}
773 758
774void Java_org_yuzu_yuzu_1emu_NativeLibrary_initializeEmulation 759void Java_org_yuzu_yuzu_1emu_NativeLibrary_initializeEmulation
775 [[maybe_unused]] (JNIEnv* env, [[maybe_unused]] jclass clazz) { 760 [[maybe_unused]] (JNIEnv* env, jclass clazz) {
776 // Create the default config.ini. 761 // Create the default config.ini.
777 Config{}; 762 Config{};
778 // Initialize the emulated system. 763 // Initialize the emulated system.
779 EmulationSession::GetInstance().System().Initialize(); 764 EmulationSession::GetInstance().System().Initialize();
780} 765}
781 766
782jint Java_org_yuzu_yuzu_1emu_NativeLibrary_defaultCPUCore([[maybe_unused]] JNIEnv* env, 767jint Java_org_yuzu_yuzu_1emu_NativeLibrary_defaultCPUCore(JNIEnv* env, jclass clazz) {
783 [[maybe_unused]] jclass clazz) {
784 return {}; 768 return {};
785} 769}
786 770
787void Java_org_yuzu_yuzu_1emu_NativeLibrary_run__Ljava_lang_String_2Ljava_lang_String_2Z( 771void Java_org_yuzu_yuzu_1emu_NativeLibrary_run__Ljava_lang_String_2Ljava_lang_String_2Z(
788 [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jclass clazz, [[maybe_unused]] jstring j_file, 772 JNIEnv* env, jclass clazz, [[maybe_unused]] jstring j_file,
789 [[maybe_unused]] jstring j_savestate, [[maybe_unused]] jboolean j_delete_savestate) {} 773 [[maybe_unused]] jstring j_savestate, [[maybe_unused]] jboolean j_delete_savestate) {}
790 774
791void Java_org_yuzu_yuzu_1emu_NativeLibrary_reloadSettings([[maybe_unused]] JNIEnv* env, 775void Java_org_yuzu_yuzu_1emu_NativeLibrary_reloadSettings(JNIEnv* env, jclass clazz) {
792 [[maybe_unused]] jclass clazz) {
793 Config{}; 776 Config{};
794} 777}
795 778
796jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getUserSetting([[maybe_unused]] JNIEnv* env, 779jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getUserSetting(JNIEnv* env, jclass clazz,
797 [[maybe_unused]] jclass clazz,
798 jstring j_game_id, jstring j_section, 780 jstring j_game_id, jstring j_section,
799 jstring j_key) { 781 jstring j_key) {
800 std::string_view game_id = env->GetStringUTFChars(j_game_id, 0); 782 std::string_view game_id = env->GetStringUTFChars(j_game_id, 0);
@@ -808,8 +790,7 @@ jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getUserSetting([[maybe_unused]] JN
808 return env->NewStringUTF(""); 790 return env->NewStringUTF("");
809} 791}
810 792
811void Java_org_yuzu_yuzu_1emu_NativeLibrary_setUserSetting([[maybe_unused]] JNIEnv* env, 793void Java_org_yuzu_yuzu_1emu_NativeLibrary_setUserSetting(JNIEnv* env, jclass clazz,
812 [[maybe_unused]] jclass clazz,
813 jstring j_game_id, jstring j_section, 794 jstring j_game_id, jstring j_section,
814 jstring j_key, jstring j_value) { 795 jstring j_key, jstring j_value) {
815 std::string_view game_id = env->GetStringUTFChars(j_game_id, 0); 796 std::string_view game_id = env->GetStringUTFChars(j_game_id, 0);
@@ -823,16 +804,14 @@ void Java_org_yuzu_yuzu_1emu_NativeLibrary_setUserSetting([[maybe_unused]] JNIEn
823 env->ReleaseStringUTFChars(j_value, value.data()); 804 env->ReleaseStringUTFChars(j_value, value.data());
824} 805}
825 806
826void Java_org_yuzu_yuzu_1emu_NativeLibrary_initGameIni([[maybe_unused]] JNIEnv* env, 807void Java_org_yuzu_yuzu_1emu_NativeLibrary_initGameIni(JNIEnv* env, jclass clazz,
827 [[maybe_unused]] jclass clazz,
828 jstring j_game_id) { 808 jstring j_game_id) {
829 std::string_view game_id = env->GetStringUTFChars(j_game_id, 0); 809 std::string_view game_id = env->GetStringUTFChars(j_game_id, 0);
830 810
831 env->ReleaseStringUTFChars(j_game_id, game_id.data()); 811 env->ReleaseStringUTFChars(j_game_id, game_id.data());
832} 812}
833 813
834jdoubleArray Java_org_yuzu_yuzu_1emu_NativeLibrary_getPerfStats([[maybe_unused]] JNIEnv* env, 814jdoubleArray Java_org_yuzu_yuzu_1emu_NativeLibrary_getPerfStats(JNIEnv* env, jclass clazz) {
835 [[maybe_unused]] jclass clazz) {
836 jdoubleArray j_stats = env->NewDoubleArray(4); 815 jdoubleArray j_stats = env->NewDoubleArray(4);
837 816
838 if (EmulationSession::GetInstance().IsRunning()) { 817 if (EmulationSession::GetInstance().IsRunning()) {
@@ -848,11 +827,11 @@ jdoubleArray Java_org_yuzu_yuzu_1emu_NativeLibrary_getPerfStats([[maybe_unused]]
848 return j_stats; 827 return j_stats;
849} 828}
850 829
851void Java_org_yuzu_yuzu_1emu_utils_DirectoryInitialization_setSysDirectory( 830void Java_org_yuzu_yuzu_1emu_utils_DirectoryInitialization_setSysDirectory(JNIEnv* env,
852 [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jclass clazz, jstring j_path) {} 831 jclass clazz,
832 jstring j_path) {}
853 833
854void Java_org_yuzu_yuzu_1emu_NativeLibrary_run__Ljava_lang_String_2([[maybe_unused]] JNIEnv* env, 834void Java_org_yuzu_yuzu_1emu_NativeLibrary_run__Ljava_lang_String_2(JNIEnv* env, jclass clazz,
855 [[maybe_unused]] jclass clazz,
856 jstring j_path) { 835 jstring j_path) {
857 const std::string path = GetJString(env, j_path); 836 const std::string path = GetJString(env, j_path);
858 837
@@ -863,8 +842,7 @@ void Java_org_yuzu_yuzu_1emu_NativeLibrary_run__Ljava_lang_String_2([[maybe_unus
863 } 842 }
864} 843}
865 844
866void Java_org_yuzu_yuzu_1emu_NativeLibrary_logDeviceInfo([[maybe_unused]] JNIEnv* env, 845void Java_org_yuzu_yuzu_1emu_NativeLibrary_logDeviceInfo(JNIEnv* env, jclass clazz) {
867 [[maybe_unused]] jclass clazz) {
868 LOG_INFO(Frontend, "yuzu Version: {}-{}", Common::g_scm_branch, Common::g_scm_desc); 846 LOG_INFO(Frontend, "yuzu Version: {}-{}", Common::g_scm_branch, Common::g_scm_desc);
869 LOG_INFO(Frontend, "Host OS: Android API level {}", android_get_device_api_level()); 847 LOG_INFO(Frontend, "Host OS: Android API level {}", android_get_device_api_level());
870} 848}
diff --git a/src/android/app/src/main/jni/native.h b/src/android/app/src/main/jni/native.h
deleted file mode 100644
index 24dcbbcb8..000000000
--- a/src/android/app/src/main/jni/native.h
+++ /dev/null
@@ -1,165 +0,0 @@
1// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#pragma once
5
6#include <jni.h>
7
8// Function calls from the Java side
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_UnPauseEmulation(JNIEnv* env,
14 jclass clazz);
15
16JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_PauseEmulation(JNIEnv* env,
17 jclass clazz);
18
19JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_StopEmulation(JNIEnv* env,
20 jclass clazz);
21
22JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_ResetRomMetadata(JNIEnv* env,
23 jclass clazz);
24
25JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_IsRunning(JNIEnv* env,
26 jclass clazz);
27
28JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_isHandheldOnly(JNIEnv* env,
29 jclass clazz);
30
31JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_setDeviceType(JNIEnv* env,
32 jclass clazz,
33 jstring j_device,
34 jstring j_type);
35
36JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadConnectEvent(
37 JNIEnv* env, jclass clazz, jstring j_device);
38
39JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadDisconnectEvent(
40 JNIEnv* env, jclass clazz, jstring j_device);
41
42JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadEvent(
43 JNIEnv* env, jclass clazz, jstring j_device, jint j_button, jint action);
44
45JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadMoveEvent(
46 JNIEnv* env, jclass clazz, jstring j_device, jint axis, jfloat x, jfloat y);
47
48JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadAxisEvent(
49 JNIEnv* env, jclass clazz, jstring j_device, jint axis_id, jfloat axis_val);
50
51JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_onReadNfcTag(JNIEnv* env,
52 jclass clazz,
53 jbyteArray j_data);
54
55JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_onRemoveNfcTag(JNIEnv* env,
56 jclass clazz);
57
58JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_onTouchEvent(JNIEnv* env,
59 jclass clazz,
60 jfloat x, jfloat y,
61 jboolean pressed);
62
63JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_onTouchMoved(JNIEnv* env, jclass clazz,
64 jfloat x, jfloat y);
65
66JNIEXPORT jbyteArray JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetIcon(JNIEnv* env,
67 jclass clazz,
68 jstring j_file);
69
70JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetTitle(JNIEnv* env, jclass clazz,
71 jstring j_filename);
72
73JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetDescription(JNIEnv* env,
74 jclass clazz,
75 jstring j_filename);
76
77JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetGameId(JNIEnv* env, jclass clazz,
78 jstring j_filename);
79
80JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetRegions(JNIEnv* env,
81 jclass clazz,
82 jstring j_filename);
83
84JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetCompany(JNIEnv* env,
85 jclass clazz,
86 jstring j_filename);
87
88JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetGitRevision(JNIEnv* env,
89 jclass clazz);
90
91JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_SetAppDirectory(JNIEnv* env,
92 jclass clazz,
93 jstring j_directory);
94
95JNIEXPORT void JNICALL
96Java_org_yuzu_yuzu_1emu_NativeLibrary_Java_org_yuzu_yuzu_1emu_NativeLibrary_InitializeGpuDriver(
97 JNIEnv* env, jclass clazz, jstring hook_lib_dir, jstring custom_driver_dir,
98 jstring custom_driver_name, jstring file_redirect_dir);
99
100JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_ReloadKeys(JNIEnv* env,
101 jclass clazz);
102
103JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_utils_DirectoryInitialization_SetSysDirectory(
104 JNIEnv* env, jclass clazz, jstring path_);
105
106JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_SetSysDirectory(JNIEnv* env,
107 jclass clazz,
108 jstring path);
109
110JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_InitializeEmulation(JNIEnv* env,
111 jclass clazz);
112
113JNIEXPORT jint JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_DefaultCPUCore(JNIEnv* env,
114 jclass clazz);
115JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_SetProfiling(JNIEnv* env, jclass clazz,
116 jboolean enable);
117
118JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_WriteProfileResults(JNIEnv* env,
119 jclass clazz);
120
121JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_NotifyOrientationChange(
122 JNIEnv* env, jclass clazz, jint layout_option, jint rotation);
123
124JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_Run__Ljava_lang_String_2(
125 JNIEnv* env, jclass clazz, jstring j_path);
126
127JNIEXPORT void JNICALL
128Java_org_yuzu_yuzu_1emu_NativeLibrary_Run__Ljava_lang_String_2Ljava_lang_String_2Z(
129 JNIEnv* env, jclass clazz, jstring j_file, jstring j_savestate, jboolean j_delete_savestate);
130
131JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_SurfaceChanged(JNIEnv* env,
132 jclass clazz,
133 jobject surf);
134
135JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_SurfaceDestroyed(JNIEnv* env,
136 jclass clazz);
137
138JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_InitGameIni(JNIEnv* env, jclass clazz,
139 jstring j_game_id);
140
141JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_ReloadSettings(JNIEnv* env,
142 jclass clazz);
143
144JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_SetUserSetting(
145 JNIEnv* env, jclass clazz, jstring j_game_id, jstring j_section, jstring j_key,
146 jstring j_value);
147
148JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetUserSetting(
149 JNIEnv* env, jclass clazz, jstring game_id, jstring section, jstring key);
150
151JNIEXPORT jdoubleArray JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetPerfStats(JNIEnv* env,
152 jclass clazz);
153
154JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_LogDeviceInfo(JNIEnv* env,
155 jclass clazz);
156
157JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_SubmitInlineKeyboardText(
158 JNIEnv* env, jclass clazz, jstring j_text);
159
160JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_SubmitInlineKeyboardInput(
161 JNIEnv* env, jclass clazz, jint j_key_code);
162
163#ifdef __cplusplus
164}
165#endif
diff --git a/src/android/app/src/main/res/drawable/ic_pip_audio.xml b/src/android/app/src/main/res/drawable/ic_pip_sound.xml
index f7ed0862e..f7ed0862e 100644
--- a/src/android/app/src/main/res/drawable/ic_pip_audio.xml
+++ b/src/android/app/src/main/res/drawable/ic_pip_sound.xml
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml
index d4f089c7f..eb1d83693 100644
--- a/src/android/app/src/main/res/values/strings.xml
+++ b/src/android/app/src/main/res/values/strings.xml
@@ -388,7 +388,7 @@
388 <string name="pause">Pause</string> 388 <string name="pause">Pause</string>
389 <string name="play">Play</string> 389 <string name="play">Play</string>
390 <string name="mute">Mute</string> 390 <string name="mute">Mute</string>
391 <string name="audio">Audio</string> 391 <string name="sound">Sound</string>
392 392
393 <!-- Licenses screen strings --> 393 <!-- Licenses screen strings -->
394 <string name="licenses">Licenses</string> 394 <string name="licenses">Licenses</string>