Создать намерение для библиотеки Android - PullRequest
0 голосов
/ 03 февраля 2019

Я обычно работаю с 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)

Есть какие-нибудь идеи, как с этим справиться?

...