admin管理员组文章数量:1516870
//**activity_main.xml**
<LinearLayout xmlns:android=""
xmlns:tools="" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:orientation="vertical">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="wrap_content"></ListView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="bottom">
<SeekBar
android:id="@+id/seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textview_nowtime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"/>
<TextView
android:id="@+id/textview_alltime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
//**music_list.xml**
<LinearLayout xmlns:android=""
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<ImageView
android:id="@+id/image_header"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="left"/>
<TextView
android:id="@+id/textview_artist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"/>
<TextView
android:id="@+id/textview_music"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
//**Config(静态常量类)**publicclassConfig {publicstaticfinalint MUSIC_START=0;
publicstaticfinalint MUSIC_SEEKTO=1;
}
//MusicAdapter(class文件)publicclassMusicAdapterextendsBaseAdapter{private LayoutInflater mInflater;
publicMusicAdapter(LayoutInflater mInflater, File[] musicFiles) {
this.mInflater = mInflater;
this.musicFiles = musicFiles;
}
private File[] musicFiles;
@OverridepublicintgetCount() {
return musicFiles.length;
}
@Overridepublic Object getItem(int position) {
return position;
}
@OverridepubliclonggetItemId(int position) {
return position;
}
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder=null;
if(convertView==null){
convertView=mInflater.inflate(R.layout.music_list,null);
viewHolder=new ViewHolder();
viewHolder.music_name= (TextView) convertView.findViewById(R.id.textview_music);
viewHolder.music_author= (TextView) convertView.findViewById(R.id.textview_artist);
viewHolder.imageView_header= (ImageView) convertView.findViewById(R.id.image_header);
convertView.setTag(viewHolder);
}else {
viewHolder= (ViewHolder) convertView.getTag();
}
viewHolder.music_name.setText(musicFiles[position].getName());
MediaMetadataRetriever mmr=new MediaMetadataRetriever();
mmr.setDataSource(musicFiles[position].getAbsolutePath());
//显示歌曲图片byte[] image=mmr.getEmbeddedPicture();
if(image!=null){
Bitmap bitmap= BitmapFactory.decodeByteArray(image,0,image.length);
viewHolder.imageView_header.setImageBitmap(bitmap);
}else {
viewHolder.imageView_header.setImageResource(R.mipmap.ic_launcher);
}
//显示歌曲作者
String artist=mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
if(artist!=null){
viewHolder.music_author.setText(artist);
}else {
viewHolder.music_author.setText("<未知>");
}
return convertView;
}
class ViewHolder{
TextView music_name;
TextView music_author;
ImageView imageView_header;
}
}
//**MusicService(歌曲播放、进度条设置)**publicclassMusicServiceextendsService {publicstaticfinalint All_TIME=0;
publicstaticfinalint NOW_TIME=1;
publicstaticfinal String ADDPOSTION="addpostion";
private MediaPlayer player;
@Nullable@Overridepublic IBinder onBind(Intent intent) {
returnnull;
}
@OverridepublicvoidonCreate() {
super.onCreate();
}
@OverridepublicintonStartCommand(final Intent intent, int flags, int startId) {
int type=intent.getIntExtra("type",Config.MUSIC_START);
switch (type){
case Config.MUSIC_START://播放歌曲
startMusic(intent);
break;
case Config.MUSIC_SEEKTO://进度条显示if(player!=null){
int progress=intent.getIntExtra("progress",0);
player.pause();
player.seekTo(progress);
player.start();
}
break;
default:
break;
}
returnsuper.onStartCommand(intent, flags, startId);
}
/*
歌曲播放
*/privatevoidstartMusic(Intent intent) {
String musicPath=intent.getStringExtra("musicName");
if(player==null){
player=new MediaPlayer();
}
player.reset();
try {
player.setDataSource(musicPath);
player.prepare();
player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@OverridepublicvoidonPrepared(MediaPlayer mp) {
mp.start();
int allTime=mp.getDuration();
Intent intent_all=new Intent(ADDPOSTION);
intent_all.putExtra("type",All_TIME);//歌曲播放的总时间
intent_all.putExtra("allTime",allTime);
sendBroadcast(intent_all);
MusicPlayerThread thread=new MusicPlayerThread();
thread.start();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
class MusicPlayerThread extends Thread{
@Overridepublicvoidrun() {
while (player.isPlaying()){
int nowTime=player.getCurrentPosition();
Intent intent_now=new Intent(ADDPOSTION);
intent_now.putExtra("type",NOW_TIME);//歌曲播放的进度时间
intent_now.putExtra("nowTime",nowTime);
sendBroadcast(intent_now);
}
super.run();
}
}
@OverridepublicvoidonDestroy() {
super.onDestroy();
}
}
//**MainActivity**publicclassMainActivityextendsAppCompatActivity {private SeekBar mSeekBar;
private MusicAdapter mAdapter;
private LayoutInflater mInflater;
private MediaPlayer player;
private File[] musicFiles;
private ListView musicListview;
private MyMusicReceiver myMusicReceiver;
publicstaticfinal String ADDPOSTION="addpostion";
private TextView textViewAlltime;
private TextView textViewNowtime;
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//进度条显示,播放时间显示
mSeekBar= (SeekBar) findViewById(R.id.seekbar);
myMusicReceiver=new MyMusicReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction(ADDPOSTION);
registerReceiver(myMusicReceiver,filter);
textViewAlltime= (TextView) findViewById(R.id.textview_alltime);
textViewNowtime= (TextView) findViewById(R.id.textview_nowtime);
//显示歌曲列表
musicListview= (ListView) findViewById(R.id.listview);
File musicDir=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
musicFiles=musicDir.listFiles();
mInflater=getLayoutInflater();
mAdapter=new MusicAdapter(mInflater,musicFiles);
musicListview.setAdapter(mAdapter);
musicListview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@OverridepublicvoidonItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent=new Intent(getApplicationContext(),MusicService.class);
intent.putExtra("type",Config.MUSIC_START);
intent.putExtra("musicName",musicFiles[position].getAbsolutePath());
startService(intent);
}
});
//进度条的显示控制
mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@OverridepublicvoidonProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@OverridepublicvoidonStartTrackingTouch(SeekBar seekBar) {
}
@OverridepublicvoidonStopTrackingTouch(SeekBar seekBar) {
Intent intent=new Intent(getApplicationContext(),MusicService.class);
intent.putExtra("type",Config.MUSIC_SEEKTO);
intent.putExtra("progress",seekBar.getProgress());
startService(intent);
}
});
}
//接收广播
class MyMusicReceiver extends BroadcastReceiver{
@OverridepublicvoidonReceive(Context context, Intent intent) {
int type=intent.getIntExtra("type",1);
switch (type){
case MusicService.All_TIME://歌曲播放的总时间int allTime=intent.getIntExtra("allTime",1);
textViewAlltime.setText(""+allTime);
mSeekBar.setMax(allTime);
break;
case MusicService.NOW_TIME://歌曲播放的进度时间int nowTime=intent.getIntExtra("nowTime",1);
textViewNowtime.setText(""+nowTime);
mSeekBar.setProgress(nowTime);
break;
default:
break;
}
}
}
@OverrideprotectedvoidonDestroy() {
super.onDestroy();
unregisterReceiver(myMusicReceiver);
}
}
版权声明:本文标题:MediaPlayer迷思:09-10年间的SWF与Adobe Flash Player探索 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/web/1773284292a3277442.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论