需要添加的权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
java代码:
package com.example.loadmusic;
import java.io.File;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.MediaStore.Video.Media;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
/**
* 读取音乐
* @author Administrator
*
*/
public class MainActivity extends Activity {
private ListView lv;
private TextView tv;
private ContentResolver contentresolver;
private Uri uri=MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;//获取音频Uri对象
SimpleCursorAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
tv = (TextView) findViewById(R.id.tv);
contentresolver=getContentResolver();
//获取Sd卡里音乐的数据
//Media._ID 如果要用SimpleCursorAdaptet必须要查找此字段
//Media.DISPLAY_NAME 音乐名 XXX.MP4
//Media.DATA 绝对路径
//Media.TITLE 音乐名 XXX
Cursor cursor=contentresolver.query(uri,
new String[]{Media._ID,
Media.DISPLAY_NAME,
Media.DATA,
Media.TITLE},null,null,null);
adapter=new SimpleCursorAdapter(MainActivity.this, R.layout.listview, cursor,
new String[]{Media.DISPLAY_NAME,Media.DATA,Media.TITLE},
new int[]{R.id.tv_name,R.id.tv_data,R.id.tv_title},SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
lv.setAdapter(adapter);
lv.setEmptyView(tv);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Cursor cc=(Cursor) adapter.getItem(position);//获取当前listview位置
String path=cc.getString(cc.getColumnIndex(Media.DATA));//获取路径
//播放音乐
Intent intent=new Intent();
intent.setAction(intent.ACTION_VIEW);//
intent.setDataAndType(Uri.fromFile(new File(path)), "audio/*");
startActivity(intent);
}
});
}
@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);
}
}
Activitymain布局代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.loadmusic.MainActivity" >
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
></ListView>
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="101dp"
android:layout_marginTop="201dp"
android:text="暂无数据"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="20dp" />
</RelativeLayout>
Listview布局代码:
<?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="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="60dp" >
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/iv"
android:singleLine="true"
android:text="aaa" />
<TextView
android:id="@+id/tv_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tv_name"
android:layout_toRightOf="@id/iv"
android:singleLine="true"
android:text="aaa" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tv_data"
android:layout_toRightOf="@id/iv"
android:singleLine="true"
android:text="aaa" />
</RelativeLayout>
</LinearLayout>