n00b здесь (первый Android-проект). Мне был предоставлен специальный видеокодек, встроенный в прошивку Android. Это файл .so, содержащий класс, который наследует от MediaPlayerInterface, а также пользовательскую реализацию MediaPlayerService для возврата экземпляров пользовательского класса кодека из функции create() factory для соответствующих типов файлов.
Я хочу использовать этот кодек как часть приложения для видеопроигрывателя, которое может быть установлено на телефонах, которые не содержат кодек в прошивке, путем размещения файла .so в папке libs/armeabi и вызова его через JNI.
Из ответа на этот вопрос Я понимаю, что это невозможно сделать в рамках MediaPlayer, и мне нужно создать новый медиаплеер с земли вверх. Для начала я реализовал интерфейс на Java и настроил его на использование пользовательского представления (вместо VideoView), которое расширяет SurfaceView и использует экземпляр класса MediaPlayer для воспроизведения видео. Затем я заменил этот экземпляр MediaPlayer на пользовательский медиа-плеер Java-класса. Я настроил интерфейс JNI, подражая тому, как это делает android_media_MediaPlayer.cpp, и вызывает класс MediaPlayer С++ в коде JNI. Теперь мне нужно заменить на на пользовательский класс медиа-проигрывателя С++.
Вот где я начинаю сталкиваться с проблемами. Каков рекомендуемый подход для реализации пользовательского плеера? Есть ли это? Есть ли какая-то онлайн-документация для любого из этих материалов, кроме траления через источник? Какую часть структуры я могу использовать и сколько мне нужно для переопределения? Должен ли я реализовать свой собственный эквивалент MediaPlayerService?
Любые советы очень ценятся.