Я пытаюсь воспроизвести видео через URL, оно работает на Android <9 </p>
, но на Android 9 не работает
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) {
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(videoPath);
mediaPlayer.prepareAsync();
mediaPlayer.setLooping(false);
mediaPlayer.setSurface(new Surface(surfaceTexture));
mediaPlayer.setOnPreparedListener(MediaPlayer::start);
}
ОБНОВЛЕНИЕ:
Я пытаюсь воспроизвести видео через прямой URL, он работает на Android <9 </p>
, но на Android 9 не работает, этот код работал до того, как вышел Android 9, он работал хорошо, но с Android 9 нетработает больше
это полный класс:
public class FeatureFragment extends Fragment implements TextureView.SurfaceTextureListener {
TextureView surfaceView;
private String videoPath = "direct url.mp4";
public static Fragment newInstance() {
return new FeatureFragment();
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.feature_fragment, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
surfaceView = view.findViewById(R.id.videoView1);
surfaceView.setSurfaceTextureListener(this);
}
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) {
try {
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(videoPath);
mediaPlayer.prepareAsync();
mediaPlayer.setLooping(false);
mediaPlayer.setSurface(new Surface(surfaceTexture));
mediaPlayer.setOnPreparedListener(MediaPlayer::start);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surfaceTexture, int width, int height) {
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) {
surfaceTexture = null;
videoPath = null;
return false;
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) {
}
}
и вот макет, который содержит только TextureView
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextureView
android:id="@+id/videoView1"
android:layout_width="300dp"
android:layout_gravity="center"
android:layout_height="300dp"
android:visibility="visible" />
</FrameLayout>