Я создаю приложение, в котором пользователь нажимает кнопку, чтобы показать полноэкранное видео. Первоначально видео прикрепляется к представлению внутри ViewPager. Чтобы показать его в полноэкранном режиме, я отсоединяю его от родителя и привязываю его к корневому представлению. Это отлично работает, за исключением случаев, когда во время воспроизведения видео переключается на полноэкранный режим. Когда я отсоединяю проигрыватель VideoView, он просто останавливается, и мне нужно его перезапустить. Это неприемлемо, так как видео начинает буферизацию перед возобновлением. Здесь часть кода, в котором выполняется отрыв:
final ViewGroup parent = (ViewGroup) findViewById(R.id.parent);
final ViewGroup root = (ViewGroup) findViewById(R.id.root);
Button b = (Button) findViewById(R.id.button);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
parent.removeView(mVideoView);
LayoutParams lp = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
root.addView(mVideoView, lp);
}
});
В зависимости от устройства у меня другая ошибка журнала. Вероятно, потому, что фактический видеопроигрыватель предоставляется изготовителем, а не Android SDK. Вот журналы ошибок для Nexus 7:
10-30 20:26:18.618: D/NvOsDebugPrintf(124): NvMMDecTVMRDestroyParser Begin
10-30 20:26:18.618: D/NvOsDebugPrintf(124): --------- Closing TVMR Frame Delivery Thread -------------
10-30 20:26:18.678: D/NvOsDebugPrintf(124): ------- NvAvpClose -------
10-30 20:26:18.678: D/NvOsDebugPrintf(124): NvMMDecTVMRDestroyParser Done
10-30 20:26:18.678: D/NvOsDebugPrintf(124): NvMMLiteTVMRDecPrivateClose Done
Я не смог отсоединить видео, не останавливая его. Я пробовал использовать SurfaceView или TextureView без успеха.
Я также попытался найти стороннего видеоплеера. Я нашел коммерческий (http://www.vitamio.org/), который я действительно не могу использовать по соображениям бизнеса. Я нашел открытый исходный код, который не обновлялся в прошлом году (https://code.google.com/p/dolphin-player/).
В настоящее время я нацелен на Android 4.2 или лучше только на планшет.
Обратите внимание, что ViewPager не является полноэкранным. Поэтому я не могу использовать LayoutParams для создания полноэкранного видео. Мне нужно удалить VideoView из родителя в ViewPager и добавить его в корневой вид, чтобы показать его в полноэкранном режиме.
URL, с которым я тестирую: http://bellvps1.cpl.delvenetworks.com/media/e1b3e24ecb944abd8f4ed823a0b76ddc/68f78d35296243bfb46d2418f03f2fd0/bande-annonce---the-secret-life-of-walter-mitty-1-9efcc5c6e52ac07a3edf84a1b21967995b7796a2.m3u8