Android TV 媒体播放器
Android TV 是基于 Android 操作系统的智能电视平台,提供了丰富的媒体播放功能。本文将介绍如何在 Android TV 上开发一个简单的媒体播放器应用,并提供相关的代码示例。
准备工作
在开始之前,我们需要准备以下环境和工具:
- Android Studio:用于开发 Android 应用的集成开发环境。
- Android TV 设备或模拟器:用于测试应用。
- 媒体资源:准备一些视频或音频文件作为测试用。
创建项目
首先,打开 Android Studio 并创建一个新的 Android 项目。选择 "Empty Activity" 模板,并填写项目的名称和包名等信息。
布局设计
在 res/layout 文件夹下创建一个新的 XML 文件,命名为 "activity_main.xml"。在该文件中,我们可以定义应用的用户界面布局。
<RelativeLayout xmlns:android="
xmlns:tools="
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingTop="16dp"
android:paddingRight="16dp"
android:paddingBottom="16dp"
tools:context=".MainActivity">
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<Button
android:id="@+id/playButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="播放" />
</RelativeLayout>
在上述布局中,我们使用了一个 SurfaceView
来显示视频画面,并添加了一个 Button
作为播放按钮。
播放器控制
在 MainActivity 类中,我们需要实现媒体播放器的相关逻辑。首先,导入必要的类和包:
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
接下来,我们在 MainActivity 类中定义一些全局变量:
private SurfaceView surfaceView;
private Button playButton;
private MediaPlayer mediaPlayer;
private boolean isPlaying = false;
在 onCreate
方法中,我们可以初始化这些变量并设置相关的监听器:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化界面元素
surfaceView = findViewById(R.id.surfaceView);
playButton = findViewById(R.id.playButton);
// 设置 SurfaceView 的回调
surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
// SurfaceView 创建成功后开始播放视频
if (isPlaying) {
playVideo();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// SurfaceView 改变时回调
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// SurfaceView 销毁时回调
stopVideo();
}
});
// 设置播放按钮的点击事件
playButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isPlaying) {
stopVideo();
} else {
playVideo();
}
}
});
}
在上述代码中,我们通过 surfaceView.getHolder().addCallback
方法来设置 SurfaceView 的回调,以便在 SurfaceView 创建成功后开始播放视频。在 playButton
的点击事件中,我们可以根据当前播放状态来选择是播放还是停止视频。
接下来,我们需要实现播放和停止视频的方法:
private void playVideo() {
try {
mediaPlayer = new MediaPlayer();
mediaPlayer.setDisplay(surfaceView.getHolder());
mediaPlayer.setDataSource(this, Uri.parse("path/to/video.mp4")); // 替换成你的视频路径
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
isPlaying = true;
playButton.setText("停止");
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
private void stopVideo() {
if