您的位置:首页 > 移动开发 > Android开发

android简单音乐播放器(二)

2015-06-22 01:21 471 查看
还是使用Activity方法播放音乐,因为我感觉还是没有弄懂service播放音乐,当然Activity播放,如果退出这个应用,音乐就不播放了…

上代码:

MainActivity.java

package com.example.dzplayer;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.database.Cursor;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.IBinder;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Build;
import android.provider.MediaStore;

public class MainActivity extends Activity{
private ListView lv;
private LayoutInflater mInflater;
private List<Mp3Info> mp3list;
public MediaPlayer mp = null;
private Intent serviceIntent = null;
private PlayMuSicService myService = null;
@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

lv = (ListView)findViewById(R.id.listview);
ContentResolver musicResolver = this.getContentResolver();
Cursor musicCursor = musicResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,null, null,MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
try{
mp3list= new ArrayList<Mp3Info>();
Cursor cursor = getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null,
MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
List<Mp3Info> mp3Infos = new ArrayList<Mp3Info>();
for (int i = 0; i < cursor.getCount(); i++) {
Mp3Info mp3Info = new Mp3Info(null,null,null,null,null);
cursor.moveToNext();
long id = cursor.getLong(cursor
.getColumnIndex(MediaStore.Audio.Media._ID));   //音乐id
String title = cursor.getString((cursor
.getColumnIndex(MediaStore.Audio.Media.TITLE)));//音乐标题
String artist = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.ARTIST));//艺术家
long duration = cursor.getLong(cursor
.getColumnIndex(MediaStore.Audio.Media.DURATION));//时长
long size = cursor.getLong(cursor
.getColumnIndex(MediaStore.Audio.Media.SIZE));  //文件大小
String url = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.DATA));              //文件路径
int isMusic = cursor.getInt(cursor
.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC));//是否为音乐
//if (isMusic != 0) {       //只把音乐添加到集合当中
//mp3Info.setAlbum(album);
mp3Info.setPath(url);
mp3list.add(mp3Info);
//  }
}

}
catch(Exception e)
{
Toast.makeText(MainActivity.this, "获得方法不对", Toast.LENGTH_SHORT).show();
}
musicCursor.moveToFirst();
@SuppressWarnings("deprecation")
ListAdapter listAdapter = new SimpleCursorAdapter(this, R.layout.simple_music,
musicCursor,
new String[]{MediaStore.Audio.Media.TITLE,MediaStore.Audio.Media.ALBUM,MediaStore.Audio.AudioColumns.DATA},
new int[]{R.id.name,R.id.album,R.id.path});
//将NAME列的数据一次映射到布局文件的id为text1的组件上。
lv.setAdapter(listAdapter);
lv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
if(mp3list !=null)
{
if( mp3list.get(arg2).getPath()!=null)
{
if(mp!=null)
{
mp.stop();
mp.release();
mp = null;
}
mp  = new MediaPlayer();
String filepath = mp3list.get(arg2).getPath();
Toast.makeText(getApplicationContext(), filepath, Toast.LENGTH_SHORT).show();
try {
mp.setDataSource(filepath);
} catch (IllegalArgumentException | SecurityException
| IllegalStateException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
mp.prepare();
} catch (IllegalStateException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mp.start();
}

else
Toast.makeText(MainActivity.this, "path os ", Toast.LENGTH_SHORT).show();
}
}
});

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}

}


Mp3Info.java是这样的

package com.example.dzplayer;

public class Mp3Info {
private String path;
private String name;
private String album;
private String artist;
private String image;

public Mp3Info(String path, String name, String album, String artist,
String image) {
super();
this.path = path;
this.name = name;
this.album = album;
this.artist = artist;
this.image = image;
}

public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAlbum() {
return album;
}
public void setAlbum(String album) {
this.album = album;
}
public String getArtist() {
return artist;
}
public void setArtist(String artist) {
this.artist = artist;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}

}


这个是simple_music.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"

android:orientation="horizontal" >
"
<ImageView
android:src="@drawable/ic_launcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageview"
/>

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:orientation="vertical"
android:showDividers="middle" >

"
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我的第一手歌"
android:textSize="20dp"
>
</TextView>
<TextView
android:id="@+id/album"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="作者"
android:textSize="10dp"
>
</TextView>
<TextView
android:id="@+id/path"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="路径"
android:textSize="10dp"
>
</TextView>
</LinearLayout>
</LinearLayout>


(三)将反思用service…
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android mediap