Hello, I`d like to implememt media list for SoundRecorder which is open_src app.
But I`ve found some Runtime error. I`ve insert media file into the MediaStore.Audio.Media using 'addToMediaDB(File file)' =============================================================== private Uri addToMediaDB(File file) { Resources res = getResources(); ContentValues cv = new ContentValues(); long current = System.currentTimeMillis(); long modDate = file.lastModified(); Date date = new Date(current); SimpleDateFormat formatter = new SimpleDateFormat( res.getString(R.string.audio_db_title_format)); String title = formatter.format(date); // Lets label the recorded audio file as NON-MUSIC so that the file // won't be displayed automatically, except for in the playlist. cv.put(MediaStore.Audio.Media.IS_MUSIC, "0"); cv.put(MediaStore.Audio.Media.TITLE, title); Log.d(MediaStore.Audio.Media.TRACK.toString (),MediaStore.Audio.Media.TRACK.toString()); cv.put(MediaStore.Audio.Media.DATA, file.getAbsolutePath()); cv.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current / 1000)); cv.put(MediaStore.Audio.Media.DATE_MODIFIED, (int) (modDate / 1000)); // cv.put(MediaStore.Audio.MediaColumns.DURATION, mRecordingLength); cv.put(MediaStore.Audio.Media.MIME_TYPE, MIME_TYPE); cv.put(MediaStore.Audio.Media.ARTIST, res.getString(R.string.audio_db_artist_name)); cv.put(MediaStore.Audio.Media.ALBUM, res.getString(R.string.audio_db_album_name)); Log.d(TAG, "Inserting audio record: " + cv.toString()); ContentResolver resolver = getContentResolver(); Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; Log.d(TAG, "ContentURI: " + base); Uri result = resolver.insert(base, cv); Log.e(TAG, result.toString()); if (result == null) { new AlertDialog.Builder(this) .setTitle(R.string.app_name) .setMessage(R.string.error_mediadb_new_record) .setPositiveButton(R.string.button_ok, null) .setCancelable(false) .show(); return null; } if (getPlaylistId(res) == -1) { createPlaylist(res, resolver); } int audioId = Integer.valueOf(result.getLastPathSegment()); addToPlaylist(resolver, audioId, getPlaylistId(res)); // Notify those applications such as Music listening to the // scanner events that a recorded audio file just created. sendBroadcast(new Intent (Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, result)); return result; } ========================================================================== and I`ve put all of my files from sdcard. ========================================================================== private void makePlaylist() { String[] cols = new String[] { MediaStore.Audio.Playlists._ID, MediaStore.Audio.Playlists.NAME }; String status = Environment.getExternalStorageState(); Uri uri; if (status.equals(Environment.MEDIA_MOUNTED)) list_path = new File("/sdcard"); else list_path = new File("/data/sec_media"); File f_list[] = list_path.listFiles(); f_len = f_list.length; for(int i=0;i < f_len ; i++){ uri = addToMediaDB(f_list[i]); } } ========================================================================== According to logs, media files was in MediaStore.Audio.Media ========================================================================== 02-25 02:13:20.385: DEBUG/SoundRecorder(1057): Inserting audio record: is_music=0 mime_type=audio/amr artist=Your recordings title=2009-02-25 02:13:20 _data=/sdcard/recording13246.amr date_modified=1235030668 album=Audio recordings date_added=1235528000 02-25 02:13:20.385: DEBUG/SoundRecorder(1057): ContentURI: content://media/external/audio/media 02-25 02:13:20.415: ERROR/SoundRecorder(1057): content://media/external/audio/media/322 ========================================================================== I thought "322" was _ID. However when I excute program, error has occured. I`d like show my audio file through ListView. ========================================================================== public class MyPlaylist extends ListActivity { SoundRecorder mSr; Uri playlist_uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; String[] projection = new String[] { MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.ARTIST }; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.playlist); Log.e("Playlist","onCreate"); Cursor cursor = managedQuery(playlist_uri, projection, null, null, null); // Used to map notes entries from the database to views SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.play_row, cursor, new String[] {MediaStore.Audio.Media.TITLE }, new int[] {R.id.text1}); setListAdapter(adapter); } } ========================================================================== and here are error message. ========================================================================== 02-25 02:13:24.065: ERROR/AndroidRuntime(1057): Caused by: java.lang.IllegalArgumentException: column '_id' does not exist ========================================================================== I couldn`t find any solutions. I think there are some problem when I`m using content provider. But for me, it is very difficult to understand. Could you please give me a solution? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---