gpt4 book ai didi

android - 录音 NullPointerException

转载 作者:行者123 更新时间:2023-11-29 02:17:25 34 4
gpt4 key购买 nike

我见过几个这样的例子,但它们似乎是针对旧版本的 SDK。我正在尝试设置基本的录音,以下代码在针对 SDK 2.0 版时给我一个 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 类,发现 basevalues 变量设置正确。

这是异常输出。

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());

其中 recorder 变量是一个 MediaRecorder 对象。但是,getMimeContentType() 方法似乎不再存在。插入是否会抛出异常,因为我没有设置 mime 类型列?如果可以,如何获取新版sdk中的mime类型?

提前致谢!

编辑:

我想我找到了如何为插入调用设置内容 MIME 类型。我想到的那一行看起来像

values.put(MediaStore.MediaColumns.MIME_TYPE, MediaStore.Audio.Media.CONTENT_TYPE);

但是我仍然得到一个 NullPointerException

最佳答案

奇怪的是,我没有看到 audio recording example之前在 Android 开发者网站上,涉及所有 ContentProvider 东西。

如果您只需要将音频录制到文件中,那么您不需要做大部分工作;您可以设置 MediaRecorder 对象,将其指向一个文件并开始录制:


// Prepare recorder source and type
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

// File to which audio should be recorded
File outputFile = getFileStreamPath("output.amr");
Uri target = Uri.parse(outputFile.getAbsolutePath());
recorder.setOutputFile(target);

// Get ready!
recorder.prepare();

// Start recording
recorder.start();

// Stop and tidy up
recorder.stop();
recorder.release();

关于android - 录音 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1967065/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com