当前位置: 首页 > 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.yayakq.cn/news/906199/

相关文章:

  • 陕西旭泽建设有限公司网站哪些网站可以做招商广告语
  • 做头像的网站空白工程机械 网站模板
  • 网站举报在哪举报做网站的人多吗
  • 专业制作网站报价wordpress网站打开满
  • 成都建设网站高级工程师查询html5 企业国际网站 多国家 多语言 源代码 cookies
  • 哪有做奇石网站app开发过程中的困难
  • 如何降低网站的权重上海网站建设哪家技术好
  • 网站营销推广培训办公室装修效果图片
  • 哪里有响应式网站企业wordpress推荐链接
  • 滕州英文网站建设青岛制作网站的
  • 做网站的费用如何入账上海大规模网站建设平台
  • 免费的企业黄页网站浏览器主页网址推荐
  • 有关建筑网站建设方案企业形象策划论文
  • 加拿大购物网站排名自己给公司做网站
  • 网站建设 个人服务器河南郑州广城区
  • 如何搜名字搜到自己做的网站企业网站建设 详细方案
  • 个人做 下载类网站宁波专业做网站
  • 企业网站关键词排名邯郸信息港邯郸信息网
  • asp代码如何修改asp网站网页域名名称网站运营一般做那些分析
  • 赶集网天津网站建设数字化营销怎么做
  • 房地产网站推荐电商平台下载
  • 网站接电话做视频网站赚钱吗
  • 山东省两学一做网站wordpress商品分类目录
  • 网站开发是程序员吗做电影网站模板教学
  • 陵水建设局网站中国十大云计算公司排名
  • dw如何做商业网站cpa单页网站怎么做
  • 付费电影网站源码私募基金网站怎么做seo
  • jsp是否可以做网站wordpress模板哪里买
  • 电子商务网站开发方式建设银行假网站
  • 辽宁公司网站建设网站制作软件下载