Android 多媒体框架支持多种多样的多媒体文件,因此可以很轻松的将音频、视频、图片集成到应用中去。 通过使用 MediaPlayer APIs.
多媒体文件可以存储在应用程序的 raw 文件夹下,也可以存储在手机的文件系统中,甚至可以是来自与网络的流媒体。
这篇文章展示了如何写出一个性能不错,用户体验良好的多媒体用用程序。
注意: 你只能通过标准输出设备来播放音频文件。目前来讲,就是通过手机的扬声器和蓝牙耳机。 不能在通话时播放音频文件
在使用 MediaPlayer 开发你的应用之前,必须在 mainfest 文件中声明需要使用哪些功能。
如果你打算使用 MediaPlayer 来播放网络流媒体内容,那么你的应用需要有这个权限
<uses-permission android:name="android.permission.INTERNET" />
首先在布局文件中
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/play"
android:layout_width="10dp"
android:layout_height="40dp"
android:layout_weight="1"
android:text="播放"/>
<TextView
android:layout_width="10dp"
android:layout_height="40dp"
android:layout_weight="5"
android:text="伸手摘下了-阿肆"
android:paddingLeft="30dp"
android:gravity="center_vertical"/>
<Button
android:id="@+id/stop"
android:layout_width="10dp"
android:layout_height="40dp"
android:layout_weight="1"
android:text="停止"/>
</LinearLayout>
<SeekBar
android:id="@+id/seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
在main.java
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); setOnclick(); initViewData(); //处理进度条更新 mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 0: //更新进度 int position = mediaPlayer.getCurrentPosition(); int time = mediaPlayer.getDuration(); int max = seekBar.getMax(); seekBar.setProgress(position * max / time); break; default: break; } } }; }
讯享网
讯享网private void setOnclick() { mediaPlayer1 = MediaPlayer.create(this,R.raw.ok); btn_paly.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mediaPlayer.start(); //后台线程发送消息进行更新进度条 final int milliseconds = 50; new Thread(){ @Override public void run(){ while(true){ try { sleep(milliseconds); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } mHandler.sendEmptyMessage(0); } } }.start(); } }); btn_stop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mediaPlayer.pause(); } }); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { //手动调节进度 // TODO Auto-generated method stub int dest = seekBar.getProgress(); int time = mediaPlayer.getDuration(); int max = seekBar.getMax(); mediaPlayer.seekTo(time*dest/max); } @Override public void onStartTrackingTouch(SeekBar arg0) { // TODO Auto-generated method stub } @Override public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) { // TODO Auto-generated method stub } }); }
private void initView() { btn_paly = findViewById(R.id.play); btn_stop = findViewById(R.id.stop); seekBar = findViewById(R.id.seekbar); }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/53427.html