android 怎么获取手机内存里的音乐信息

android 怎么获取手机内存里的音乐信息,第1张

Android自带的音乐播放器中,在获取音乐文件信息的时候是通过扫描得到相关信息的。扫描时使用扫描器MediaScanner完成。

Android系统提供了MediaScanner、MediaProvider、MediaStore等接口,并且提供了一套数据库表格,通过Content Provider的方式提供给用户。当手机开机或者有SD卡插拔等事件发生时,系统将会自动扫描SD卡和手机内存上的媒体文件,如audio、video、等,将相应的信息放到定义好的数据库表格中。在这个程序中,我们不需要关心如何去扫描手机中的文件,只要了解如何查询和使用这些信息就可以了。

MediaStore中定义了一系列的数据表格,通过Android 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(MediaStoreAudioMediaEXTERNAL_CONTENT_URI, null, null, null, MediaStoreAudioMediaDEFAULT_SORT_ORDER);

得到cursor后,我们可以调用Cursor的相关方法具体的音乐信息:

歌曲ID:MediaStoreAudioMedia_ID

Int id = cursorgetInt(cursorgetColumnIndexOrThrow(MediaStoreAudioMedia_ID));

歌曲的名称:MediaStoreAudioMediaTITLE

String tilte = cursorgetString(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaTITLE));

歌曲的专辑名:MediaStoreAudioMediaALBUM

String album = cursorgetString(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaALBUM));

歌曲的歌手名:MediaStoreAudioMediaARTIST

String artist = cursorgetString(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaARTIST));

歌曲文件的路径:MediaStoreAudioMediaDATA

String url = cursorgetString(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaDATA));

歌曲的总播放时长:MediaStoreAudioMediaDURATION

Int duration = cursorgetInt(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaDURATION));

歌曲文件的大小:MediaStoreAudioMediaSIZE

Int size = cursorgetLong(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaSIZE));

1使用WIFI

首先设置用户权限

Xml代码

<uses-permission android:name="androidpermissionACCESS_WIFI_STATE"></uses-permission>

<uses-permission android:name="androidpermissionCHANGE_WIFI_STATE"></uses-permission>

<uses-permission android:name="androidpermissionWAKE_LOCK"></uses-permission>

其次,代码如下

Java代码

public void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

setContentView(Rlayoutmain);

//获取wifi服务

WifiManager wifiManager = (WifiManager) getSystemService(ContextWIFI_SERVICE);

//判断wifi是否开启

if (!wifiManagerisWifiEnabled()) {

wifiManagersetWifiEnabled(true);

}

WifiInfo wifiInfo = wifiManagergetConnectionInfo();

int ipAddress = wifiInfogetIpAddress();

String ip = intToIp(ipAddress);

EditText et = (EditText)findViewById(RidEditText01);

etsetText(ip);

}

private String intToIp(int i) {

return (i & 0xFF ) + "" +

((i >> 8 ) & 0xFF) + "" +

((i >> 16 ) & 0xFF) + "" +

( i >> 24 & 0xFF) ;

}

2使用GPRS

首先,设置用户上网权限

Xml代码

<uses-permission android:name="androidpermissionINTERNET"></uses-permission>

其次,代码如下

Java代码

public String getLocalIpAddress()

{

try

{

for (Enumeration<NetworkInterface> en = NetworkInterfacegetNetworkInterfaces(); enhasMoreElements();)

{

NetworkInterface intf = ennextElement();

for (Enumeration<InetAddress> enumIpAddr = intfgetInetAddresses(); enumIpAddrhasMoreElements();)

{

InetAddress inetAddress = enumIpAddrnextElement();

if (!inetAddressisLoopbackAddress())

{

return inetAddressgetHostAddress()toString();

}

}

}

}

catch (SocketException ex)

{

Loge("WifiPreference IpAddress", extoString());

}

return null;

}

要是查看系统 可以在设置里面有的,如果具体的APP,可以借助第三方软件,比如re管理器等,当然如果想管理内置软件,就得root ,常见的网有root大师,刷机精灵等。您问的是这些吗?

用intentfilter获取安装的apk

包名,在BroadcastReceiver里面就可以拿到安装的包名和APP,等基本信息,再利用packageManager的功能就可能放到listView里面

以上就是关于android 怎么获取手机内存里的音乐信息全部的内容,包括:android 怎么获取手机内存里的音乐信息、android怎么获取手机ip地址、android怎么获取手机的系统等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9362420.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存