我见过的这个几个例子,但它们似乎是旧版本的SDK。我正在尝试设置基本的音频录制,并且在定位SDK 2.0的版本时,以下代码给了我一个NullPointerException
。录音NullPointerException异常
ContentValues values = new ContentValues(2);
values.put(MediaStore.MediaColumns.TITLE, "somename");
values.put(MediaStore.MediaColumns.DATE_MODIFIED, System.currentTimeMillis());
ContentResolver resolver = getContentResolver();
Uri base = MediaStore.Audio.Media.INTERNAL_CONTENT_URI;
Uri newUri = resolver.insert(base, values);
我已经缩小到最后一行,因为抛出异常。我已经使用Log类进行了测试,发现base
和values
变量的设置是正确的。
这里是例外输出。
12-27 11:08:18.608: ERROR/DatabaseUtils(197): Writing exception to parcel
12-27 11:08:18.608: ERROR/DatabaseUtils(197): java.lang.NullPointerException
12-27 11:08:18.608: ERROR/DatabaseUtils(197): at com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:1478)
12-27 11:08:18.608: ERROR/DatabaseUtils(197): at com.android.providers.media.MediaProvider.insert(MediaProvider.java:1370)
12-27 11:08:18.608: ERROR/DatabaseUtils(197): at android.content.ContentProvider$Transport.insert(ContentProvider.java:150)
12-27 11:08:18.608: ERROR/DatabaseUtils(197): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:140)
12-27 11:08:18.608: ERROR/DatabaseUtils(197): at android.os.Binder.execTransact(Binder.java:287)
12-27 11:08:18.608: ERROR/DatabaseUtils(197): at dalvik.system.NativeStart.run(Native Method)
而且,在很多我所看到的例子,他们的MIME类型添加到ContentValues
对象使用类似
values.put(MediaStore.MediaColumns.MIME_TYPE, recorder.getMimeContentType());
其中记录变量是MediaRecorder对象。但似乎getMimeContentType()
方法不再存在。插入是否会抛出异常,因为我没有设置MIME类型列?如果是这样,我怎样才能在新版本的SDK中获得mime类型?
在此先感谢!
编辑:
我想我找到了如何设置插入通话内容MIME类型。 我看起来就像
values.put(MediaStore.MediaColumns.MIME_TYPE, MediaStore.Audio.Media.CONTENT_TYPE);
行我也不过仍然得到一个NullPointerException
让我更接近。我认为内容提供商代码的作用是可以跨应用程序使用内容。我没有收到一个权限错误,指出我需要AUDIO_RECORD权限。谢谢你的帮助! – 2009-12-27 23:22:22
把它照顾好了!再次感谢。 – 2009-12-27 23:40:36
你可以发布解决方案,克里斯?其他具有相同问题的成员可以从中受益。 – 2009-12-28 14:40:29