如题,就是去实现把所有的音乐文件找出来,然后选择一个设置成默认铃声

解决方案 »

  1.   

    1.读所有音乐文件可以通过查询手机和sd卡的音乐数据库的方法,查询出来显示在一个ListView中。
    也可以通过读取文件列表的方式。
    例如读取sd卡音乐文件的方法:
    String[] mCursorCols = new String[] { MediaStore.Audio.Media._ID,
    MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ALBUM,
    MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DATA,
    MediaStore.Audio.Media.MIME_TYPE, MediaStore.Audio.Media.ALBUM_ID,
    // MediaStore.Audio.Media.ARTIST_ID,
    MediaStore.Audio.Media.DISPLAY_NAME, // 文件名
    MediaStore.Audio.Media.DURATION };
    // 通过一个URI可以获取所有音频文件
    Uri MUSIC_URL = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; // 这里过滤了一下,默认播放时间大于10秒的可以看作是歌 "duration > 10000"
    try {
    String selection = MediaStore.Audio.Media.IS_MUSIC + "!=0 AND "
    + MediaStore.Audio.Media.DURATION +" > ?";
    String[] selectionArgs = new String[] {
    String.valueOf(MusicDemo.minAudioLength * 1000) // s -> ms
    }; // 歌曲名升序排列
    // String orderBy = MediaStore.Audio.Media.TITLE + " COLLATE LOCALIZED ASC";   
    String orderBy = MediaStore.Audio.Media.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
    mCursor = getContentResolver().query(MUSIC_URL, mCursorCols, selection, selectionArgs, orderBy);
    if (mCursor == null) {
    Log.d(TAG, "No music has found!!!!!!" + '\n');
    } else if (mCursor.getCount() == 0) {
    Log.d(TAG, "No music has found!!!!!! mCursor.getCount() == 0" + '\n');
    }
    } catch (Exception e) {
    e.printStackTrace();
    Log.e(TAG, "onCreate() getContentResolver ERROR.");
    }2.RingtoneManager就是铃声管理类,用来设置铃声时使用。
    参考:
    android 个人铃声设置代码
      

  2.   

    对于如何把那个ListView里面的音乐设置成默认铃声我还是不清楚,各位大虾帮帮忙,能有个具体点的实现代码参考会更好理解
      

  3.   

    RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri); 
      

  4.   

    quickSearchBox就已经提供了这个功能,提供了手机本地音乐搜索,直接去手机或SDcard的音乐数据库里查找,封装在ListView里,再调用RingtoneManager类来设置默认铃声