Я пишу модуль для 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 () 'для ссылки на пустой объект