简单的音乐播放app-MediaPlayer,seekBar

简单的音乐播放app-MediaPlayer,seekBarAndroid 多媒体框架支持多种多样的多媒体文件 因此可以很轻松的将音频 视频 图片集成到应用中去 通过使用 MediaPlayer APIs 多媒体文件可以存储在应用程序的 raw 文件夹下 也可以存储在手机的文件系统中 甚至可以是来自与网络的流媒体 这篇文章展示了如何写出一个性能不错 用户体验良好的多媒体用用程序

大家好,我是讯享网,很高兴认识大家。

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); }

 

小讯
上一篇 2025-02-26 19:05
下一篇 2025-04-11 09:55

相关推荐

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