安卓安卓游戏数据包放哪提取音乐

Android中通过MediaStore获取音乐文件信息方法
投稿:junjie
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Android中通过MediaStore获取音乐文件信息方法,本文讲解了获取歌曲的名称、歌曲的专辑名、歌曲的歌手名、歌曲文件的全路径、歌曲文件的名称、歌曲文件的发行日期等音乐文件信息的方法,需要的朋友可以参考下
Android系统提供了MediaScanner,MediaProvider,MediaStore等接口,并且提供了一套数据库表格,通过Content Provider的方式提供给用户。当手机开机或者有SD卡插拔等事件发生时,系统将会自动扫描SD卡和手机内存上的媒体文件,如audio,video,图片等,将相应的信息放到定义好的数据库表格中。在这个程序中,我们不需要关心如何去扫描手机中的文件,只要了解如何查询和使用这些信息就可以了。
MediaStore中定义了一系列的数据表格,通过ContentResolver提供的查询接口,我们可以得到各种需要的信息。下面我们重点介绍查询SD卡上的音乐文件信息。
先来了解一下ContentResolver的查询接口:
Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);
Uri:指明要查询的数据库名称加上表的名称,从MediaStore中我们可以找到相应信息的参数,具体请参考开发文档。
Projection: 指定查询数据库表中的哪几列,返回的游标中将包括相应的信息。Null则返回所有信息。
selection: 指定查询条件
selectionArgs:参数selection里有 ?这个符号是,这里可以以实际值代替这个问号。如果selection这个没有?的话,那么这个String数组可以为null。
SortOrder:指定查询结果的排列顺序
下面的命令将返回所有在外部存储卡上的音乐文件的信息:
Cursor cursor = query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
得到cursor后,我们可以调用Cursor的相关方法具体的音乐信息:
歌曲ID:MediaStore.Audio.Media._ID
Int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));
歌曲的名称 :MediaStore.Audio.Media.TITL
String tilte = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
歌曲的专辑名:MediaStore.Audio.Media.ALBUM
String album = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));
歌曲的歌手名: MediaStore.Audio.Media.ARTIST
String artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
歌曲文件的全路径 :MediaStore.Audio.Media.DATA
String url = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
歌曲文件的名称:MediaStroe.Audio.Media.DISPLAY_NAME
String display_name = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME));
歌曲文件的发行日期:MediaStore.Audio.Media.YEAR
String year = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.YEAR));
歌曲的总播放时长 :MediaStore.Audio.Media.DURATION
Int duration = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));
歌曲文件的大小 :MediaStore.Audio.Media.SIZE
Int size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Android 多媒体 MediaPlayer之从三种资源文件中获取数据播放_iOS开发_动态网站制作指南
Android 多媒体 MediaPlayer之从三种资源文件中获取数据播放
来源:人气:217
& &&MediaPlayer类最让我想到的是音频和视频的播放了&&该类提供了开始或恢复播放start()、暂停播放pause()、停止播放stop()等方法。该类位于android.media包下,详见API文档。
& 三种获取资源文件的方式
1.播放应用内的音频文件
MediaPlayer mMediaPlayer=new MediaPlayer.create(this, R.raw.love);
2.播放内存卡中音频文件
MediaPlayer mMediaPlayer=new MediaPlayer.setDataSource(&file://mnt/sdcard/Music/test.mp3&);
3.获取网络上的媒体文件
MediaPlayer mMediaPlayer=new MediaPlayer.setDataSource(this, Uri.parse(&http://192.168.43.135/test.mp3&));
我们下面做一个播放音乐的小列子。
步骤1.创建项目
& & & 2.activity_main.的代码,添加一个进度条SeekBar和一个ImageButton按钮
&LinearLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
xmlns:android1=&/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:orientation=&vertical&
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=&.MainActivity& &
android:id=&@+id/seekBar1&
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
&ImageButton
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:src=&@android:drawable/ic_media_play&
android:onClick=&playMusic&
&/LinearLayout&
3.在MainActivity写playMusic点击事件(用播放应用内的音频文件)
public void playMusic(View view){
//把view强制转换成ImageButton
final ImageButton imageButton= (ImageButton)
if (mMediaPlayer == null) {
// 实列化一个MediaPlayer
// 播放应用内的音频文件
mMediaPlayer = new MediaPlayer().create(this, R.raw.love);
// ***:准备完成的***
mMediaPlayer.setOneparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.start();
// 把图标修改为暂停的图标
imageButton.setImageResource(android.R.drawable.ic_media_pause);
// 获取音乐的总时长
int duration = mediaPlayer.getDuration();
// 设置进度条的最大值为音乐的总时长
mSeekBar.setMax(duration);
new MyThread().start();
} else if (mMediaPlayer.isPlaying()) {
mMediaPlayer.pause();
// 把图标修改为播放的图标
imageButton.setImageResource(android.R.drawable.ic_media_play);
mMediaPlayer.start();
// 把图标修改为暂停的图标
imageButton.setImageResource(android.R.drawable.ic_media_pause);
5.为进度条添加事件
mSeekBar = (SeekBar) findViewById(R.id.seekBar1);
mSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
public void onStopTrackingTouch(SeekBar seekBar) {
//获取拖动结束之后的位置
int progress=seekBar.getProgress();
//跳转到某个位置播放
mMediaPlayer.seekTo(progress);
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// TODO Auto-generated method stub
&6.写一个线程让播放进度和进度条一样
class MyThread extends Thread{
public void run() {
// TODO Auto-generated method stub
super.run();
while(mSeekBar.getProgress()&=mSeekBar.getMax()){
//获取当前音乐播放的位置
int currentPosition=mMediaPlayer.getCurrentPosition();
//让进度条动起来
mSeekBar.setProgress(currentPosition);
得到下图就完成了
& 在MainActivity写playMusic点击事件(播放内存卡中音频文件)
首先要获取读取内存卡的权限
&uses-permission android:name=&android.permission.READ_EXTERNAL_STORAGE& /&
public void isPlayOrPause(View view){
final ImageButton imageButton= (ImageButton)
if(mMediaPlayer==null){
//实例化MediaPlayer
//播放内存卡中音频文件
mMediaPlayer=new MediaPlayer();
//设置类型
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//设置音源
mMediaPlayer.setDataSource(this, Uri.parse(&file://mnt/sdcard/Music/f.mp3&));
//准备一下(内存卡)
mMediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
//***:准备完成的***
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.start();
//把图标修改为暂停的图标
imageButton.setImageResource(android.R.drawable.ic_media_pause);
//获取音乐的总时长
int duration=mediaPlayer.getDuration();
//设置进度条的最大值为音乐的总时长
seekBar.setMax(duration);
new MyThread().start();
}else if(mMediaPlayer.isPlaying()){
mMediaPlayer.pause();
//把图标修改为播放的图标
imageButton.setImageResource(android.R.drawable.ic_media_play);
mMediaPlayer.start();
//把图标修改为暂停的图标
imageButton.setImageResource(android.R.drawable.ic_media_pause);
在MainActivity写playMusic点击事件(获取网络上的媒体文件)
首先要获取联网的权限
&uses-permission android:name=&android.permission.INTERNET& /&
把音频文件放入到tomcat的Root下面然后启动tomcat,一定要在手机上输入那个地址检查一下是否能进入tomcat的官网,这里就不做步骤演示了。
public void isPlayOrPause(View view){
final ImageButton imageButton= (ImageButton)
if(mMediaPlayer==null){
//实例化MediaPlayer
mMediaPlayer=new MediaPlayer();
//设置类型
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
//设置音源
//播放网络音乐
& mediaPlayer.setDataSource(this, Uri.parse(&http://192.168.43.135/internet.mp3&));
&//准备(网络)
& & & & & mediaPlayer.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
//***:准备完成的***
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.start();
//把图标修改为暂停的图标
imageButton.setImageResource(android.R.drawable.ic_media_pause);
//获取音乐的总时长
int duration=mediaPlayer.getDuration();
//设置进度条的最大值为音乐的总时长
seekBar.setMax(duration);
new MyThread().start();
}else if(mMediaPlayer.isPlaying()){
mMediaPlayer.pause();
//把图标修改为播放的图标
imageButton.setImageResource(android.R.drawable.ic_media_play);
mMediaPlayer.start();
//把图标修改为暂停的图标
imageButton.setImageResource(android.R.drawable.ic_media_pause);
优质网站模板

参考资料

 

随机推荐