Android 多媒体(播放应用内的音乐)

来源:互联网 发布:手机视频聊天软件 编辑:程序博客网 时间:2024/06/05 03:30

音乐播放器实现一是放在应用程序里面的,在后面的博客我会说到在手机内存和网络中的播放器,所以,有需要的话,可以去看看我后面的那些博客!由于思路比较清晰,代码量也不是很多而且挺简单的,所以在这里我就直接放代码了。

xml布局文件:

[html] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout  
  3.     xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     xmlns:app="http://schemas.android.com/apk/res-auto"  
  5.     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"  
  6.     android:layout_height="match_parent"  
  7.     tools:context="com.zking.laci.android27_playmusic.MainActivity"  
  8.     android:orientation="vertical"  
  9.     >  
  10. <SeekBar  
  11.     android:layout_width="match_parent"  
  12.     android:layout_height="wrap_content"  
  13.     android:id="@+id/sb_main_play"  
  14.     />  
  15.     <ImageButton  
  16.         android:layout_width="wrap_content"  
  17.         android:layout_height="wrap_content"  
  18.         android:background="@android:drawable/ic_media_play"  
  19.         android:onClick="playOrPause"  
  20.         />  
  21.   
  22. </LinearLayout>  

activity--java代码:

[java] view plain copy
  1. package com.zking.laci.android27_playmusic;  
  2.   
  3. import android.media.MediaPlayer;  
  4. import android.support.v7.app.AppCompatActivity;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.widget.ImageButton;  
  8. import android.widget.SeekBar;  
  9.   
  10. public class MainActivity extends AppCompatActivity {  
  11.   
  12.     private MediaPlayer mediaPlayer;  
  13.     private SeekBar sb_main_play;  
  14.   
  15.     @Override  
  16.     protected void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.activity_main);  
  19.         sb_main_play = (SeekBar) findViewById(R.id.sb_main_play);  
  20.   
  21.         sb_main_play.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {  
  22.             @Override  
  23.             public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {  
  24.             }  
  25.   
  26.             @Override  
  27.             public void onStartTrackingTouch(SeekBar seekBar) {  
  28.             }  
  29.   
  30.             @Override  
  31.             public void onStopTrackingTouch(SeekBar seekBar) {  
  32.                 //获取当前进度条位置  
  33.                 int currentPosition=seekBar.getProgress();  
  34.                 //跳转到某个位置播放  
  35.                 mediaPlayer.seekTo(currentPosition);  
  36.             }  
  37.         });  
  38.     }  
  39.   
  40.     public void playOrPause(View view){  
  41.         ImageButton ib= (ImageButton) view;  
  42.         if(mediaPlayer==null){//如果没有歌  
  43.             mediaPlayer = MediaPlayer.create(this, R.raw.a);  
  44.             mediaPlayer.start();  
  45.             ib.setImageResource(android.R.drawable.ic_media_pause);  
  46.             //获得音乐的播放时间  
  47.             int time=mediaPlayer.getDuration();  
  48.             //设置最大值为音乐播放的时间  
  49.             sb_main_play.setMax(time);  
  50.             new MyThread().start();  
  51.   
  52.         }else if(mediaPlayer.isPlaying()){//如果正在播放  
  53.             //暂停  
  54.             mediaPlayer.pause();  
  55.             //开始图标  
  56.             ib.setImageResource(android.R.drawable.ic_media_play);  
  57.         }else {  
  58.             //开始播放  
  59.             mediaPlayer.start();  
  60.             //暂停图标  
  61.             ib.setImageResource(android.R.drawable.ic_media_pause);  
  62.   
  63.         }  
  64.     }  
  65.   
  66.     class MyThread extends Thread{  
  67.         @Override  
  68.         public void run() {  
  69.             super.run();  
  70.             while(sb_main_play.getProgress()<sb_main_play.getMax()){  
  71.                 //获得音乐当前的播放位置  
  72.                 int currentPosition=mediaPlayer.getCurrentPosition();  
  73.                 sb_main_play.setProgress(currentPosition);  
  74.             }  
  75.         }  
  76.     }  
  77. }  
原创粉丝点击