android找不到源,android 音乐播放器找不到源文件

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

package com.example.frame.a123;

import android.app.Service;

import android.content.Intent;

import android.media.MediaPlayer;

import android.os.Binder;

import android.os.Bundle;

import android.os.IBinder;

import android.os.Message;

import android.support.annotation.Nullable;

import java.io.IOException;

import java.util.Timer;

import java.util.TimerTask;

//创建一个继承自服务的音乐服务类

public class MusicService extends Service {

private MediaPlayer player;

private Timer timer;

//绑定服务时,调用此方法

@Nullable

@Override

public IBinder onBind(Intent intent) {

return new MusicControl();

}

//创建播放音乐的服务

@Override

public void onCreate() {

super.onCreate();

//创建音乐播放器对象

player = new MediaPlayer();

}

//销毁播放音乐服务

@Override

public void onDestroy() {

super.onDestroy();

//停止播放音乐

player.stop();

//释放占用的资源

player.release();

//将player置为空

player = null;

}

//播放音乐

public void play() {

try {

if(player == null)

{

player = new MediaPlayer();

}

//重置

player.reset();

//加载多媒体文件

player.setDataSource("/storage/C21F-1AE9/D.mp3");

//准备播放音乐

player.prepare();

//播放音乐

player.start();

//添加计时器

addTimer();

} catch (IOException e) {

e.printStackTrace();

}

}

//暂停播放音乐

public void pausePlay() {

player.pause();

}

//继续播放音乐

public void continuePlay() {

player.start();

}

//创建一个实现音乐接口的音乐控制类

class MusicControl extends Binder implements MusicInterface {

@Override

public void play() {

MusicService.this.play();

}

@Override

public void pausePlay() {

MusicService.this.pausePlay();

}

@Override

public void continuePlay() {

MusicService.this.continuePlay();

}

@Override

public void seekTo(int progress) {

MusicService.this.seekTo(progress);

}

}

//设置音乐的播放位置

public void seekTo(int progress) {

player.seekTo(progress);

}

//添加计时器用于设置音乐播放器中的播放进度

public void addTimer() {

//如果没有创建计时器对象

if(timer == null) {

//创建计时器对象

timer = new Timer();

timer.schedule(new TimerTask() {

//执行计时任务

@Override

public void run() {

//获得歌曲总时长

int duration = player.getDuration();

//获得歌曲的当前播放进度

int currentPosition = player.getCurrentPosition();

//创建消息对象

Message msg = MainActivity.handler.obtainMessage();

//将音乐的播放进度封装至消息对象中

Bundle bundle = new Bundle();

bundle.putInt("duration", duration);

bundle.putInt("currentPosition", currentPosition);

msg.setData(bundle);

//将消息发送到主线程的消息队列

MainActivity.handler.sendMessage(msg);

}

},

//开始计时任务后的5毫秒,第一次执行run方法,以后每500毫秒执行一次

5, 500);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值