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