当前位置: 首页 > news >正文

南京网站网站建设公司怎么建立网站快捷方式

南京网站网站建设公司,怎么建立网站快捷方式,三 网站建设,手机网站建设选 朗创营销使用MediaPlayer播放音频文件 MediaPlayer 概览 | Android 开发者 | Android Developers (google.cn) MediaPlayer | Android Developers (google.cn) 1. 应用需求 异步播放,利用服务进行后台播放;(暂时没有实现音频焦点转移的功能&#…

使用MediaPlayer播放音频文件

MediaPlayer 概览 | Android 开发者 | Android Developers (google.cn)

MediaPlayer | Android Developers (google.cn)

1. 应用需求

  1. 异步播放,利用服务进行后台播放;(暂时没有实现音频焦点转移的功能)
  2. 显示音频文件列表,选中不同的歌曲,播放不同的音频文件(未实现);
  3. 添加进度条,实现音频进度可调整。(未实现)

注意需要实现音频的焦点转移,不能和beatbox应用似的,快速点击时候会有很多个音频在同时响。

目前只实现了一个后台播放。

2. MediaPlayer

在这里插入图片描述

MediaPlayer 支持三种不同的媒体来源:

  1. 本地资源,(res/raw文件夹下的文件)
  2. 内部的 URI,比如可以通过 ContentResolver 来获取
  3. 外部的 URL(流) 对于Android所支持的的媒体格式列表,

除了第一种文件不需要prepare()这个操作,其余的媒体资源都需要进行prepare()。

注意一个点:

reset

public void reset ()

Resets the MediaPlayer to its uninitialized state. After calling this method, you will have to initialize it again by setting the data source and calling prepare().

reset()后需要重新的设置数据源和重新prepare()

常用 API 描述

getCurrentPosition( ):得到当前的播放位置
getDuration() :得到文件的时间
getVideoHeight() :得到视频高度
getVideoWidth() :得到视频宽度
isLooping():是否循环播放
isPlaying():是否正在播放
pause():暂停
prepare():准备(同步)
prepareAsync():准备(异步)
release():释放MediaPlayer对象
reset():重置MediaPlayer对象
seekTo(int msec):指定播放的位置(以毫秒为单位的时间)
setAudioStreamType(int streamtype):指定流媒体的类型
setDisplay(SurfaceHolder sh):设置用SurfaceHolder来显示多媒体
setLooping(boolean looping):设置是否循环播放
setOnBufferingUpdateListener(MediaPlayer.OnBufferingUpdateListener listener): 网络流媒体的缓冲监听
setOnCompletionListener(MediaPlayer.OnCompletionListener listener): 网络流媒体播放结束监听
setOnErrorListener(MediaPlayer.OnErrorListener listener): 设置错误信息监听
setOnVideoSizeChangedListener(MediaPlayer.OnVideoSizeChangedListener listener): 视频尺寸监听
setScreenOnWhilePlaying(boolean screenOn):设置是否使用SurfaceHolder显示
setVolume(float leftVolume, float rightVolume):设置音量
start():开始播放
stop():停止播放

3. 播放音频

(1)res/raw目录下的文件

播放作为本地原始资源(保存在应用的 res/raw/ 目录中)提供的音频:

MediaPlayer mediaPlayer =MediaPlayer.create(context, R.raw.sound_file_1);
mediaPlayer.start();// no need to call prepare(); create() does that for you

“原始”资源是指系统不会尝试以任何特定方式解析的文件。不过,该资源的内容不应为原始音频。它应该是采用某种支持的格式且经过适当编码和格式化的媒体文件。

(2)内部 URI

更改MediaPlayerAudioService.java文件中的30行

这里的文件地址可以用adb shell来获取,进入到相关的文件夹下,pwd

mPlayer = new MediaPlayer();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
File file = new File("//sdcard/Music/fly.mp3");
mPlayer.setDataSource(getApplicationContext(), Uri.parse(file.getAbsolutePath()));
mPlayer.prepare(); // might take long! (for buffering, etc)

(3)外部网址(流式传输)

4. 利用服务后台播放音乐

(1)利用startService

(2)利用binderService

binderService要比startService好一些,我们可以在binder中去实现定制的功能方法,同时有binder可以将调用者和service连接起来。

MediaPlayerAudioService.java

public class MediaPlayerAudioService extends Service {private static final String TAG = "IntentService";private static final String EXTRA_AUDIO_RES_ID = "android.byd.audiovedio.audio_res_id";private MediaPlayer mPlayer = null;private boolean isRelease = true;   //判断是否MediaPlayer是否释放的标志private int mMusicResId;public MediaPlayerAudioService() {}public static Intent newIntent(Context context, int musicResId) {Intent intent = new Intent(context, MediaPlayerAudioService.class);intent.putExtra(EXTRA_AUDIO_RES_ID, musicResId);return intent;}//定义onBinder方法所返回的对象public class MyBinder extends Binder {// 设置歌曲ResIdpublic void setResId(int resId) {mMusicResId = resId;}// 播放public void play(){if (isRelease) {mPlayer = MediaPlayer.create(getApplicationContext(), mMusicResId);isRelease = false;}mPlayer.start();   //开始播放}// 暂停public void pause(){mPlayer.pause();     //暂停播放}// 停止public void stop(){mPlayer.reset();     //重置MediaPlayermPlayer.release();   //释放MediaPlayerisRelease = true;}}private MyBinder mBinder = new MyBinder();@Overridepublic IBinder onBind(Intent intent) {// TODO: Return the communication channel to the service.Log.i(TAG, "onBind方法被调用!");mMusicResId = intent.getIntExtra(EXTRA_AUDIO_RES_ID, 0);return mBinder;}@Overridepublic void onCreate() {Log.i(TAG, "onCreate方法被调用!");super.onCreate();}@Overridepublic boolean onUnbind(Intent intent) {Log.i(TAG, "onUnbind方法被调用!");return true;}@Overridepublic void onDestroy() {Log.i(TAG, "onDestroy方法被调用!");super.onDestroy();}@Overridepublic void onRebind(Intent intent) {Log.i(TAG, "onRebind方法被调用!");super.onRebind(intent);}
}

MediaPlayerAudioActivity.java

public class MediaPlayerAudioActivity extends AppCompatActivity implements View.OnClickListener{private Button mStartButton;private Button mPauseButton;private Button mStopButton;public static Intent newIntent(Context packageContext) {Intent intent = new Intent(packageContext, MediaPlayerAudioActivity.class);return intent;}//保持所启动的Service的IBinder对象,同时定义一个ServiceConnection对象private MediaPlayerAudioService.MyBinder mBinder;private ServiceConnection conn = new ServiceConnection() {//Activity与Service断开连接时回调该方法@Overridepublic void onServiceDisconnected(ComponentName name) {System.out.println("------Service DisConnected-------");}// Activity与Service连接成功时回调该方法@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {System.out.println("------Service Connected-------");mBinder = (MediaPlayerAudioService.MyBinder) service;}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_media_player_audio);mStartButton = (Button) findViewById(R.id.btn_media_player_audio_start);mPauseButton = (Button) findViewById(R.id.btn_media_player_audio_pause);mStopButton = (Button) findViewById(R.id.btn_media_player_audio_stop);Intent intentService = MediaPlayerAudioService.newIntent(this, R.raw.fly);// 绑定服务bindService(intentService, conn, Service.BIND_AUTO_CREATE);mStartButton.setOnClickListener(this);mPauseButton.setOnClickListener(this);mStopButton.setOnClickListener(this);}@Overridepublic void onClick(View view) {switch (view.getId()){case R.id.btn_media_player_audio_start:mBinder.play();mStartButton.setEnabled(false);mPauseButton.setEnabled(true);mStopButton.setEnabled(true);break;case R.id.btn_media_player_audio_pause:mBinder.pause();mStartButton.setEnabled(true);mPauseButton.setEnabled(false);mStopButton.setEnabled(false);break;case R.id.btn_media_player_audio_stop:mBinder.stop();// stop() 之后如果想再次播放,就得再次prepare()mStartButton.setEnabled(true);mPauseButton.setEnabled(false);mStopButton.setEnabled(false);break;}}
}
http://www.ritt.cn/news/17428.html

相关文章:

  • 外贸网站设计seo搜索引擎优化期末及答案
  • 做淘宝内部优惠券网站要钱么网上教育培训机构
  • 乐陵森司特木业青岛seo杭州厂商
  • 免费小说网站怎么做重庆森林经典台词独白
  • 有专门做网站的公司吗公司网站推广
  • 动态网站建设的费用明细北京seo排名厂家
  • 我要下载中国建设网站谷歌官方网站登录入口
  • 衡水网站设计爱站网关键词排名
  • 专做网站公司百度提交入口的注意事项
  • 职业生涯规划大赛策划书东莞关键词优化实力乐云seo
  • python做网站快么互联网全网营销
  • 做好网站建设静态化百度知道怎么赚钱
  • 做泰迪狗网站的意义seo软件简单易排名稳定
  • 房地产开发公司网站建设方案模板58同城推广
  • 电脑做视频的网站网站片区
  • 做的网站乱码怎么搞百度极速版app下载安装
  • 怎样做教育视频网站java培训学费多少钱
  • 昆明建站公司推荐线下宣传渠道和宣传方式
  • 免费网站客服工具百度网站大全首页
  • 手机网站整站源码女孩子做运营是不是压力很大
  • 如何看网站是不是织梦做的自己如何注册一个网站
  • 做淘客需要用的网站百度网站制作
  • wordpress网站打开卡怎么网上宣传自己的产品
  • 做网站多少钱赚钱吗培训机构网站模板
  • 武汉制作网站公司关键词优化需要从哪些方面开展
  • 那些网站做汽车可靠性怎么找到当地的微信推广
  • 网站建设 网站优化营销型网站建设专家外贸接单平台哪个最好
  • 东营做网站的公司网络推广是干嘛的
  • 怎样设计网站建设软文推广名词解释
  • 搭积木建网站软件重庆网站优化公司