Я обычно работаю с Unity, но сейчас я создаю библиотеку Android, чтобы получить доступ к Android Media Store Audios и сервису Audio Player.Мне удалось заставить Компонент Media Store работать примерно, но я застрял в части Media Player Service.
Я пытаюсь связать Media Player Service.Я проанализировал и изменил некоторый код, который нашел в сети, поскольку у меня нет опыта работы с нативной разработкой для Android.
У меня есть такой код:
private void playAudio(String media) {
//Check is service is active
if (!serviceBound) {
Intent playerIntent = new Intent(this, MediaPlayerService.class);
playerIntent.putExtra("media", media);
startService(playerIntent);
bindService(playerIntent, serviceConnection, MainContext.BIND_AUTO_CREATE);
} else {
//Service is active
//Send media with BroadcastReceiver
}
}
Проблема в том, чтоНамерение создания.(Ну, на самом деле я понятия не имею, для чего предназначение).В исходном коде «this» относится к MainActivity, потому что он вызывается в этом скрипте.В библиотеке у меня нет MainActivity таким образом.Поэтому я сделал функцию Initialize, которая переводит активность из единицы в библиотеку:
private static Context MainContext;
private static Activity MainActivity;
static public void Initialize (Context unityContext, Activity unityActivity){
try {
// MediaPlayer.Initialize(unityContext);
MainContext = unityContext;
MainActivity = unityActivity;
} catch (NullPointerException e){
Log.d("UnityPlugin", "Null PTR Exception");
Toast.makeText(MainContext, "Initialisazion Error", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
, которая хорошо работала с контентом для создания контент-резолвера.Но это не сработало, когда я заменил «this» на «MainActivity».MainActivity не было нулевым, я проверил это.
Но приложение выдало исключение NullPointerException в намерении.
AndroidJavaException: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
02-02 22:50:37.867 9364 9409 E Unity : java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
02-02 22:50:37.867 9364 9409 E Unity : at android.content.ContextWrapper.getPackageName(ContextWrapper.java:133)
02-02 22:50:37.867 9364 9409 E Unity : at android.content.ComponentName.<init>(ComponentName.java:128)
02-02 22:50:37.867 9364 9409 E Unity : at android.content.Intent.<init>(Intent.java:4668)
02-02 22:50:37.867 9364 9409 E Unity : at org.regentropfen.audioplayerlibrary.MediaPlayer.playAudio(MediaPlayer.java:68)
02-02 22:50:37.867 9364 9409 E Unity : at org.regentropfen.audioplayerlibrary.MediaPlayer.Play(MediaPlayer.java:116)
02-02 22:50:37.867 9364 9409 E Unity : at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
02-02 22:50:37.867 9364 9409 E Unity : at com.unity3d.player.UnityPlayer.c(Unknown Source)
02-02 22:50:37.867 9364 9409 E Unity : at com.unity3d.player.UnityPlayer$e$2.queueIdle(Unknown Source)
02-02 22:50:37.867 9364 9409 E Unity : at android.os.MessageQueue.next(MessageQueue.java:397)
02-02 22:50:37.867 9364 9409 E Unity : at android.os.Looper.loop(Looper.java:164)
02-02 22:50:37.867 9364 9409 E Unity : at com.unity3d.player.UnityPlayer$e.run(Unknown Source)
Есть какие-нибудь идеи, как с этим справиться?