结合SERVICE 播放视频 安卓开发eclipse代码
时间: 2023-08-25 20:04:41 浏览: 39
好的,以下是一个简单的Java代码示例,可以结合SERVICE播放视频,适用于安卓开发Eclipse:
```java
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.Toast;
import java.io.IOException;
import android.media.MediaPlayer;
public class VideoService extends Service implements SurfaceHolder.Callback, MediaPlayer.OnPreparedListener, MediaPlayer.OnCompletionListener {
private MediaPlayer mediaPlayer;
private SurfaceHolder surfaceHolder;
private SurfaceView surfaceView;
private FrameLayout videoLayout;
private String videoPath;
@Override
public void onCreate() {
super.onCreate();
// 初始化MediaPlayer
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setOnCompletionListener(this);
// 初始化SurfaceView
surfaceView = new SurfaceView(this);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
// 初始化FrameLayout
videoLayout = new FrameLayout(this);
videoLayout.addView(surfaceView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent == null) {
return START_NOT_STICKY;
}
// 获取视频路径
videoPath = intent.getStringExtra("videoPath");
if (videoPath == null) {
return START_NOT_STICKY;
}
// 播放视频
try {
mediaPlayer.setDataSource(videoPath);
mediaPlayer.prepareAsync();
} catch (IOException e) {
Toast.makeText(this, "Error playing video", Toast.LENGTH_SHORT).show();
stopSelf();
}
return START_NOT_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
// 释放MediaPlayer
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
// 移除SurfaceView
if (surfaceView != null) {
videoLayout.removeView(surfaceView);
surfaceView = null;
}
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
mediaPlayer.setDisplay(surfaceHolder);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// Do nothing
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// Do nothing
}
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
}
@Override
public void onCompletion(MediaPlayer mp) {
stopSelf();
}
}
```
在这个示例中,我们创建了一个名为VideoService的SERVICE,在onCreate方法中初始化MediaPlayer和SurfaceView,onStartCommand方法中获取视频路径并播放视频,onDestroy方法中释放MediaPlayer和移除SurfaceView。
你可以根据自己的需求修改这个示例代码,例如添加一些处理视频的函数,或者将它嵌入到自己的安卓应用程序中。