Android 播放SD卡上指定的一首歌(初级版)
来源:互联网 发布:化工仿真软件 编辑:程序博客网 时间:2024/06/03 19:29
在讲主题之前,我们先补充一点sqlite查询语句的知识(Android的数据库就是采用sqlite)。
LIKE操作符
一个很有用的关系操作符是LIKE。LIKE的作用与相等(=)很像,但却是通过一个模板来进行字符串匹配。例如,要查询所有名称以字符“J”开始的食品,可使用如下语句:
sqlite> SELECT id, name FROM foods WHERE name LIKE 'J%';
id name
156 Juice box
236 Juicy Fruit Gum
243 Jello with Bananas
244 JujyFruit
245 Junior Mints
370 Jambalaya
模板中的百分号(%)可与任意0到多个字符匹配。下划线(_)可与任意单个字符匹配。
语句说明:该语句会返回foods表中的id和name这两列的数据。其中,返回的数据必须满足:数据在name这一个属性上,是以J开头的字符串。
与之对应的,我们来看Android里的查询语句query().
contentResolver.query(Uri uri,String[] projection, String[] selection, String[] selectionArgs, String sortOrder);
uri 是表名
projection 是要返回的列名数组
selection 是约束条件,相当于WHERE关键字后面的语句,如 name LIKE 'J%’ (注意:sqlite中字符串是以单引号' '包含起来的)
selectionArgs 该数组中的String用于依次替代seletion中含有的?号(例如,selection语句 name = ? AND phone = ? 中含有两个?号,那么selectionArgs里就需要引入两个String参数,如new String[ ]{myName,myPhone})
sortOrder 所返回数据的排序方式
——————————————————
好了,进入正题:
以下程序实现,为AndroidTest这个程序添加一首曲名以“sorry sorry”结束的音乐背景。
该音乐在该Activity进入onCreat( )和onRestart( )状态下开始播放,在该Activity进入onStop()状态下停止播放。
package keNan.com.test;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import android.media.MediaPlayer;import android.net.Uri;import android.os.Bundle;import android.provider.MediaStore;/*** @ClassName: AndroidTestActivity* @Description: Set a background music for this Activity.* @author 慢跑学Android* @date 2011-11-22 下午04:12:00* */public class AndroidTestActivity extends Activity {private MediaPlayer mediaPlayer;private final Uri musicTableForSD = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;private final String musicTitle = MediaStore.Audio.AudioColumns.TITLE;private final String musicId = MediaStore.Audio.Media._ID; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); playBackgroundMusic(); } @Overrideprotected void onRestart() {super.onRestart();playBackgroundMusic();}@Overrideprotected void onStop() {super.onStop();stopMusic();}private void playBackgroundMusic() { // Get a ContentResovler, // so that we can read the music information form SD card. ContentResolver contentResolver = getContentResolver(); String musicName = "%sorry sorry"; Cursor cursor = contentResolver.query( musicTableForSD, new String[]{musicId,musicTitle}, musicTitle + " LIKE ?", new String[]{musicName}, null); // If cursor has a recode, we support that we find the music. if (cursor.moveToNext()) { // Get the music id. int position = cursor.getInt(cursor.getColumnIndex(musicId)); Uri uri = Uri.withAppendedPath(musicTableForSD, "/" + position); mediaPlayer = MediaPlayer.create(this, uri); if (null != mediaPlayer) { mediaPlayer.start(); } } // Finish our query work. cursor.close(); } private void stopMusic() { if (null != mediaPlayer) { mediaPlayer.stop(); mediaPlayer.release(); } }}
参考资料:
Android 获取sdcard音乐文件
Android 中数据库查询方法query()中的selectionArgs的用法
新手教程:Android内置的SQLite操作方法
- Android 播放SD卡上指定的一首歌(初级版)
- VideoView播放SD卡上指定视频文件
- 初级音乐播放器——播放存储卡上的歌曲,能够播放和暂停(SD卡没有MP3文件会报错)
- 上传音乐到Android模拟器的SD卡,并在Android模拟器上播放
- 初级音乐播放器——播放存储卡上的一首音乐,能够显示歌曲名和播放进度,并且能够播放和暂停(没有SD卡会报错)
- android音乐播放器怎么搜索SD卡上的音乐文件
- VideoView播放SD卡上视频的例子
- Android 上SD卡的建立
- android 操作SD卡上的文件
- android读写SD卡上的文件
- Android读写SD卡上的数据
- 播放SD卡上全部音频文件
- Android 教你播放SD卡的MP3
- Android 开发-获取SD卡所有指定类型的文件
- Android之根据读取SD卡指定后缀名的文件
- Android 读取SD卡指定后缀的所有文件
- Android 读取SD卡指定后缀的所有文件
- Android 监控(检查)SD卡指定目录的变化
- windows 64 python beautiful soup 安装
- alertDialog修改Item高度
- java jdk环境变量
- make的自动变量
- 自动添加修改环境变量
- Android 播放SD卡上指定的一首歌(初级版)
- Drawable
- 判断文件是否存在,判断是否为文件夹
- 生成最大值范围内无重复值的长度为最大值的随机序列List<int>
- JS 跳转到指定Action
- git使用总结
- Windows系统编程之异步I/O和完成端口
- 斩断DDoS魔掌的六把利剑(四)
- 一次Sqlalchemy从model类定义到数据库表的SQL脚本自动生成日志