Я не нашел аналогичного вопроса и ответа на него, поэтому решил опубликовать новый.VideoView не воспроизводит видео при добавлении в глобальную компоновку с помощью WindowManager
Я создал пользовательскую RelativeLayout, которая играет роль обертки макета контента, которая накачивается и добавляется в оболочку во время инициализации так называемой оболочки.
И все кажется прекрасным, за исключением воспроизведения видео, на самом деле видео не загружается вообще (OnPrepared никогда не вызывается). Я также попытался прислушиваться к любым ошибкам, которые, возможно, имели к этому какое-то отношение, но ничего не было (OnError никогда не вызывается). В журнале не было никакой информации, которая может быть связана с этой проблемой.
Это странная проблема, так как VideoView отлично работает в действиях, фрагментах и т. Д., Но когда дело доходит до добавления его в глобальный (общесистемный) макет (с помощью WindowManager), он начинает становиться действительно странным.
Возможно ли воспроизвести видео в VideoView в глобальном (общесистемном) макете?
Любая помощь будет оценена! Заранее спасибо!
Фрагменты кода:
CustomRelativeLayout
public class CustomRelativeLayout extends RelativeLayout {
public static final String TAG = "Some Tag";
public CustomRelativeLayout(Context context) {
super(context);
init();
}
//The rest of the constructors
//go here...
private void init() {
WindowManager windowManager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
LayoutInflater inflater = LayoutInflater.from(getContext());
View inflatedView = inflater.inflate(R.layout.my_layout, this, false);
VideoView videoView = (VideoView) inflatedView.findViewById(R.id.videoView);
videoView.setVideoURI(Uri.parse("http://www.html5videoplayer.net/videos/toystory.mp4"));
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
Log.e(TAG, "The Video is ready to be played!");
mediaPlayer.start();
}
});
//adding the inflated view
addView(inflatedView);
//adding to the windowManager
Point size = new Point();
mWindowManager.getDefaultDisplay().getSize(size);
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(
size.x,
size.y
);
layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL;
layoutParams.flags = (WindowManager.LayoutParams.FLAG_DIM_BEHIND | WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
layoutParams.dimAmount = 0f;
layoutParams.format = PixelFormat.RGBA_8888;
mWindowManager.addView(this, layoutParams);
}
}
Layout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<VideoView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"/>
</RelativeLayout>
Права доступа
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
Но завышенный вид добавлен –