android简单音乐播放器(二)
2015-06-22 01:21
471 查看
还是使用Activity方法播放音乐,因为我感觉还是没有弄懂service播放音乐,当然Activity播放,如果退出这个应用,音乐就不播放了…
上代码:
MainActivity.java
Mp3Info.java是这样的
这个是simple_music.xml
(三)将反思用service…
上代码:
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…
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories