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怎么获取手机的系统等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)