简易android音乐播放器.doc_第1页
简易android音乐播放器.doc_第2页
简易android音乐播放器.doc_第3页
简易android音乐播放器.doc_第4页
简易android音乐播放器.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本音乐播放器实现播放列表和播放界面之间的跳转,由于本人是初学者,只能实现以下功能:自动获取播放列表、点击上一首、下一首、播放、暂停、音量调节、显示歌手、演唱者、拉动播放进度条、显示歌曲总长度、当前播放时间。代码如下:一、 xml文件(3个)1. main.xml 2. listitem.xml 3. music_player.xml 二、 activity文件(两个)1. MyListViewDemo.javapackage org.lxh.demo;import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.ContentResolver;import android.content.Intent;import android.database.Cursor;import android.media.MediaPlayer;import android.os.Bundle;import vider.MediaStore;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import android.widget.Toast;import android.widget.AdapterView.OnItemClickListener;import android.widget.SimpleAdapter;public class MyListViewDemo extends Activity / private SimpleCursorAdapter adapter = null;private ListView datalist = null; / 定义ListView组件/ public void onCreate(Bundle savedInstanceState) / super.onCreate(savedInstanceState);/ super.setContentView(R.layout.main);/ this.datalist = (ListView) super.findViewById(R.id.datalist); / 取得组件/ ContentResolver resolver = getContentResolver();/ / 从Content Provider中获得SD卡上的音乐列表/ Cursor cursor =/ resolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,/ null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);/ /控制Cursor/ startManagingCursor(cursor);/ String cols = new String MediaStore.Audio.Media.TITLE,/ MediaStore.Audio.Media.ARTIST,/ MediaStore.Audio.Media.DATA ;/ int ids = new intR.id.trackname, R.id.artist, R.id.path;/ adapter = new SimpleCursorAdapter(this, R.layout.listitem,/ cursor, cols, ids);/ / this.simplecursoradapter = new SimpleCursorAdapter(this, this.list,/ / R.layout.listitem, new String pic, title, author,/ / type, score / Map中的key的名称/ / , new int R.id.pic, R.id.title, R.id.author, R.id.type,/ / R.id.score ); / 是data_list.xml中定义的组件的资源ID/ /this.datalist.setAdapter(this.simplecursoradapter);/ datalist.setAdapter(adapter);private ListMap list = new ArrayListMap(); / 定义显示的内容包装private SimpleAdapter adapter = null; / 进行数据的转换操作public Cursor cursor;/ 1.使用Mediastore进行查询时,需要一个curor。private String _paths;/ 13.建这个数组保存查询到的信息private String _titles;/ 14.建这个数组保存查询到的信息private String _artists;/ 15.建这个数组保存查询到的信息private MediaPlayer mediaPlayer;public int position = 0;private static final int code = 1;/* 获取音乐文件的方法 */public void getMusicFile() / 3.获取音乐文件的方法cursor = this.getContentResolver().query(/ 4.要实现contenresolver这个查询接口的话就要用curorMediaStore.Audio.Media.EXTERNAL_CONTENT_URI,/ 5./ uri是系统提供给我们的,可以看一下帮助文档,系统给我们提供了两个uri,/ 一个是查询外部sd卡的uri,一个是查询手机本身内部文件的uri。我们现在所使用的是查询外部的uri。new String MediaStore.Audio.Media.DATA,/ 6.查询列,在这里我们这保存三项,Data是歌曲的保存路径MediaStore.Audio.Media.TITLE,/ 7.查询歌曲名称MediaStore.Audio.Media.ARTIST / 8.查询歌唱者, null, null, null);/ 9.这三项表示查询条件,设置为null表示查询所有的。startManagingCursor(cursor);if (cursor != null | cursor.getCount() = 0) / 10.判断查询长度是否为空。即:查询是否有音乐文件。/ Toast.makeText(this, 没有音乐文件, Toast.LENGTH_SHORT).show();/ Log.i(TAG, 没有音乐文件);/ 11.将信息查询到的结果打印在控制台上_paths = new Stringcursor.getCount();/ 16.对数组进行初始化,数组的长度就是curor的长度_titles = new Stringcursor.getCount();/ 16.对数组进行初始化,数组的长度就是curor的长度_artists = new Stringcursor.getCount();/ 16.对数组进行初始化,数组的长度就是curor的长度cursor.moveToFirst();/ 17.将cursor的游标移到第一位for (int i = 0; i cursor.getCount(); i+) / 18.用for循环读取curor里面的信息_pathsi = cursor.getString(0);/ 19.用getString获取信息,0表示他的索引,即:从_paths这一项开始查询_titlesi = cursor.getString(1);/ 19.用getString获取信息_artistsi = cursor.getString(2);/ 19.用getString获取信息cursor.moveToNext();/ 20.将游标移到下一位/ Log.i(TAG, path = + _pathsi);/ 21.将查询到的信息打印在控制台上/ Log.i(TAG, thitle = + _titlesi);/ 21.将查询到的信息打印在控制台上/ Log.i(TAG, artist = + _artistsi);/ 21.将查询到的信息打印在控制台上/* 获取音乐文件的方法 */Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);super.setContentView(R.layout.main);this.datalist = (ListView) super.findViewById(R.id.datalist); / 取得组件getMusicFile();for (int x = 0; x _titles.length; x+) Map map = new HashMap(); / 定义Map集合,保存每一行数据map.put(trackname, _titlesx); / 与data_list.xml中的TextView组加匹配map.put(artist, _artistsx); / 与data_list.xml中的TextView组加匹配map.put(path, _pathsx); / 与data_list.xml中的TextView组加匹配/ map.put(type,this.data2x0);/ map.put(score, this.data2x1);this.list.add(map); / 保存了所有的数据行this.adapter = new SimpleAdapter(this, this.list, R.layout.listitem,new String trackname, artist, path / Map中的key的名称, new int R.id.trackname, R.id.artist, R.id.path ); / 是data_list.xml中定义的组件的资源IDthis.datalist.setAdapter(this.adapter);/* 实现监听部分 */this.datalist.setOnItemClickListener(new OnItemClickListener() Overridepublic void onItemClick(AdapterView arg0, View arg1, int arg2,long arg3) / TODO Auto-generated method stubIntent it = new Intent(getApplicationContext(),MusicPlayer.class);/ MyListViewDemo.this.startActivity(it);Bundle bd = new Bundle();bd.putInt(name, arg2);it.putExtras(bd); / it.putExtra(“test”, shuju”);startActivity(it);/startActivityForResult(it, code););/* 实现监听部分 */Override/protected void onActivityResult(int requestCode, int resultCode, Intent data) /super.onActivityResult(requestCode, resultCode, data);/if (requestCode = code) /if (resultCode = RESULT_OK) /Intent it = data;/position = it.getExtras().getInt(name);/ else if (resultCode = RESULT_CANCELED) /Toast.makeText(getApplicationContext(), cancled,/Toast.LENGTH_SHORT).show();/2. MusicPlayer.javapackage org.lxh.demo;import java.io.IOException;import javax.xml.datatype.Duration;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.os.Bundle;import vider.MediaStore;import android.app.Activity;import android.app.Service;import android.app.DownloadManager.Query;import android.content.Intent;import android.database.Cursor;import android.util.Log;import android.view.KeyEvent;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.EditText;import android.widget.ImageButton;import android.widget.ImageView;import android.widget.ListView;import android.widget.SeekBar;import android.widget.SimpleCursorAdapter;import android.widget.SeekBar.OnSeekBarChangeListener;import android.widget.TextView;import android.widget.Toast;public class MusicPlayer extends Activity / private ListView datalist = null;/ String cols = new String MediaStore.Audio.Media.TITLE,/ MediaStore.Audio.Media.ARTIST,/ MediaStore.Audio.Media.DATA ;/ int ids = new intR.id.trackname, R.id.artist, R.id.path;/ SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,/ R.layout.listitem,/ cursor, cols, ids);/ this.datalist.setAdapter(adapter);private ImageView fh;private Cursor cursor;/ 1.使用Mediastore进行查询时,需要一个curor。private String _paths;/ 13.建这个数组保存查询到的信息private String _titles;/ 14.建这个数组保存查询到的信息private String _artists;/ 15.建这个数组保存查询到的信息private TextView music_title;/ 23.定义这两个控件分别显示音乐名称和歌唱者private TextView music_artist;/ 23.定义这两个控件分别显示音乐名称和歌唱者private SeekBar seekBar;private TextView music_currentTime;private TextView music_duration;private ImageView last;private ImageView play_pause;private ImageView next;private ImageView btnLower = null;private ImageView btnUpper = null;private AudioManager audioManager = null;private ImageView xunhuan;public MediaPlayer mediaPlayer;/ 25.定义一个mediaPlayerpublic int position = 0;/ 29.定义一个position,记录当前播放的位置,如果要进项下一首就对position进项加1。private String TAG = MusicPlayer;/ 12.定义一下tag,以便将信息打印在控制台上。MediaPlayer my_player= new MediaPlayer();Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.music_player);fh = (ImageView) findViewById(R.id.fanhuiliebiao);btnLower = (ImageView) findViewById(R.id.btnLower);btnUpper = (ImageView) findViewById(R.id.btnUpper);xunhuan =(ImageView) findViewById(R.id.xunhuan);audioManager = (AudioManager) getSystemService(Service.AUDIO_SERVICE);getMusicFile();/ 2.获取音乐文件init();/ 22.新建方法,并接下来进行各个控件的初始化Bundle bd2 = getIntent().getExtras();position = bd2.getInt(name);playMusic(position);play_pause.setImageResource(R.drawable.pause);music_title.setText(_titlesposition);music_artist.setText(_artistsposition);/ mediaPlayer.stop();/ mediaPlayer.release();/ mediaPlayer = new MediaPlayer();/ try / mediaPlayer.setDataSource(_pathsposition);/ mediaPlayer.prepare();/ catch (IllegalArgumentException e) / / TODO Auto-generated catch block/ e.printStackTrace();/ catch (IllegalStateException e) / / TODO Auto-generated catch blo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论