Xposed модуль. Ошибка загрузки звука в SoundPool - PullRequest
0 голосов
/ 08 января 2019

Я пишу модуль для Xposed в автомобильном устройстве (Andriod 5.1.1).

Не могу загрузить звук в SoundPool. Andriod Studio находит файл (когда вы нажимаете на Yu, файл R.raw.back начинает воспроизводиться. Тестовая программа с Activity работает правильно.

Я положил файл back.ogg в папку res \ raw и в папку assets. Обе загрузки не удаются. Также создание кастомного тоста с картинкой проходит с ошибкой

public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
    XC_MethodHook onCreate = new XC_MethodHook() {
        @SuppressLint({ "sendToast" })
        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
            Log.d(BackView.TAG, "onCreate");
            microntekServer = (Service) param.thisObject;
            context = (Context) param.thisObject;
            try {
                AudioAttributes audioAttrib = new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_GAME)
                        .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION).build();
                sp = new SoundPool.Builder().setAudioAttributes(audioAttrib).setMaxStreams(MAX_STREAMS).build();

                sp.setOnLoadCompleteListener(new OnLoadCompleteListener() {
                    @Override
                    public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
                        soundLoad = true;
                        Log.d(TAG, "BackId=" + sampleId + ", status=" + status);
                    }
                });

                try {
                    AssetFileDescriptor afd = context.getAssets().openFd("back.ogg");
                    Log.d(TAG, "open");
                    soundIdBack = sp.load(afd, 1); <- 1 expample
                    Log.d(TAG, "OK");
                } catch (Exception e) {
                    Log.e(TAG, e.getMessage());
                }
                soundIdBack = sp.load(context, R.raw.back, 1); <- 2 expample
                Log.d(TAG, "sp load");
            } catch (Exception e) {
                Log.e(TAG, e.getMessage());
            }

        }
    };
    if (lpparam.packageName.equals(SERVICE_PACKAGE_NAME)) {
        Utils.setTag(TAG);
        Utils.readXposedMap();
        Log.d(TAG, SERVICE_PACKAGE_NAME + " hook START");
        Utils.findAndHookMethodCatch("android.microntek.service.MicrontekServer", lpparam.classLoader, "onCreate",
                onCreate);
        Log.d(TAG, SERVICE_PACKAGE_NAME + " hook OK");
    }
}

Ошибка загрузки файла Пример 1: back.ogg Ошибка загрузки файла Пример 2: Попытка вызвать метод интерфейса 'java.lang.String java.lang.CharSequence.toString () 'для ссылки на пустой объект

...