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
-~----------~----~----~----~------~----~------~--~---

Reply via email to