- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试制作一个应用程序来录制一秒钟的声音,然后从录制的声音中读取最大幅度。这是我目前所拥有的,但我的应用程序崩溃了,我不知道为什么。
这是我的第二个 Activity ,我在按下“记录”按钮后调用了第一个 Activity 。该应用程序在我的模拟器和手机上崩溃。
package radu.soundSampler;
import java.io.IOException;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import android.media.MediaRecorder;
public class DisplayMessageActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Intent intent = getIntent();
//String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
MediaRecorder rec = new MediaRecorder();
rec.setAudioSource(MediaRecorder.AudioSource.MIC);
rec.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
rec.setOutputFile("/newRecording");
rec.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
try {
rec.prepare();
} catch (IllegalStateException e) {
} catch (IOException o) {
}
rec.start();
for(int i=0;i<100000;i++);
rec.stop();
int rezultat = rec.getMaxAmplitude();
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(Integer.toString(rezultat));
setContentView(textView);
}
}
我计算机上的(已更新)错误日志显示:
08-18 13:30:07.968: E/MediaRecorder(687): start called in an invalid state: 4
08-18 13:30:07.968: D/AndroidRuntime(687): Shutting down VM
08-18 13:30:07.968: W/dalvikvm(687): threadid=1: thread exiting with uncaught exception (group=0x40015560)
08-18 13:30:07.978: E/AndroidRuntime(687): FATAL EXCEPTION: main
08-18 13:30:07.978: E/AndroidRuntime(687): java.lang.RuntimeException: Unable to start activity ComponentInfo{radu.soundSampler/radu.soundSampler.DisplayMessageActivity}: java.lang.IllegalStateException
08-18 13:30:07.978: E/AndroidRuntime(687): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
08-18 13:30:07.978: E/AndroidRuntime(687): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
08-18 13:30:07.978: E/AndroidRuntime(687): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
08-18 13:30:07.978: E/AndroidRuntime(687): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
08-18 13:30:07.978: E/AndroidRuntime(687): at android.os.Handler.dispatchMessage(Handler.java:99)
08-18 13:30:07.978: E/AndroidRuntime(687): at android.os.Looper.loop(Looper.java:123)
08-18 13:30:07.978: E/AndroidRuntime(687): at android.app.ActivityThread.main(ActivityThread.java:3683)
08-18 13:30:07.978: E/AndroidRuntime(687): at java.lang.reflect.Method.invokeNative(Native Method)
08-18 13:30:07.978: E/AndroidRuntime(687): at java.lang.reflect.Method.invoke(Method.java:507)
08-18 13:30:07.978: E/AndroidRuntime(687): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-18 13:30:07.978: E/AndroidRuntime(687): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-18 13:30:07.978: E/AndroidRuntime(687): at dalvik.system.NativeStart.main(Native Method)
08-18 13:30:07.978: E/AndroidRuntime(687): Caused by: java.lang.IllegalStateException
08-18 13:30:07.978: E/AndroidRuntime(687): at android.media.MediaRecorder.start(Native Method)
08-18 13:30:07.978: E/AndroidRuntime(687): at radu.soundSampler.DisplayMessageActivity.onCreate(DisplayMessageActivity.java:29)
08-18 13:30:07.978: E/AndroidRuntime(687): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-18 13:30:07.978: E/AndroidRuntime(687): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
08-18 13:30:07.978: E/AndroidRuntime(687): ... 11 more
所以我想模拟器可能无法“运行”麦克风,所以我在手机上安装了 .apk
但它也在那里崩溃了。我不知道可能是什么问题,所以你能帮助我,和/或给我任何提示吗?
提前致谢!
另一个堆栈跟踪,您请求的那个。我在 catch 语句中使用了 o.printStackTrace()
和 e.printStackTrace()
,我希望这是你要求我做的:
08-18 14:06:11.908: W/System.err(811): java.io.FileNotFoundException: /newRecording (Read-only file system)
08-18 14:06:11.908: W/System.err(811): at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
08-18 14:06:11.908: W/System.err(811): at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:232)
08-18 14:06:11.918: W/System.err(811): at java.io.FileOutputStream.<init>(FileOutputStream.java:94)
08-18 14:06:11.918: W/System.err(811): at java.io.FileOutputStream.<init>(FileOutputStream.java:165)
08-18 14:06:11.918: W/System.err(811): at java.io.FileOutputStream.<init>(FileOutputStream.java:144)
08-18 14:06:11.918: W/System.err(811): at android.media.MediaRecorder.prepare(MediaRecorder.java:533)
08-18 14:06:11.918: W/System.err(811): at radu.soundSampler.DisplayMessageActivity.onCreate(DisplayMessageActivity.java:23)
08-18 14:06:11.918: W/System.err(811): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-18 14:06:11.918: W/System.err(811): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
08-18 14:06:11.918: W/System.err(811): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
08-18 14:06:11.918: W/System.err(811): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
08-18 14:06:11.918: W/System.err(811): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
08-18 14:06:11.918: W/System.err(811): at android.os.Handler.dispatchMessage(Handler.java:99)
08-18 14:06:11.918: W/System.err(811): at android.os.Looper.loop(Looper.java:123)
08-18 14:06:11.918: W/System.err(811): at android.app.ActivityThread.main(ActivityThread.java:3683)
08-18 14:06:11.918: W/System.err(811): at java.lang.reflect.Method.invokeNative(Native Method)
08-18 14:06:11.928: W/System.err(811): at java.lang.reflect.Method.invoke(Method.java:507)
08-18 14:06:11.928: W/System.err(811): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-18 14:06:11.928: W/System.err(811): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-18 14:06:11.928: W/System.err(811): at dalvik.system.NativeStart.main(Native Method)
08-18 14:06:11.928: E/MediaRecorder(811): start called in an invalid state: 4
08-18 14:06:11.928: D/AndroidRuntime(811): Shutting down VM
08-18 14:06:11.928: W/dalvikvm(811): threadid=1: thread exiting with uncaught exception (group=0x40015560)
08-18 14:06:11.948: E/AndroidRuntime(811): FATAL EXCEPTION: main
08-18 14:06:11.948: E/AndroidRuntime(811): java.lang.RuntimeException: Unable to start activity ComponentInfo{radu.soundSampler/radu.soundSampler.DisplayMessageActivity}: java.lang.IllegalStateException
08-18 14:06:11.948: E/AndroidRuntime(811): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
08-18 14:06:11.948: E/AndroidRuntime(811): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
08-18 14:06:11.948: E/AndroidRuntime(811): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
08-18 14:06:11.948: E/AndroidRuntime(811): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
08-18 14:06:11.948: E/AndroidRuntime(811): at android.os.Handler.dispatchMessage(Handler.java:99)
08-18 14:06:11.948: E/AndroidRuntime(811): at android.os.Looper.loop(Looper.java:123)
08-18 14:06:11.948: E/AndroidRuntime(811): at android.app.ActivityThread.main(ActivityThread.java:3683)
08-18 14:06:11.948: E/AndroidRuntime(811): at java.lang.reflect.Method.invokeNative(Native Method)
08-18 14:06:11.948: E/AndroidRuntime(811): at java.lang.reflect.Method.invoke(Method.java:507)
08-18 14:06:11.948: E/AndroidRuntime(811): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-18 14:06:11.948: E/AndroidRuntime(811): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-18 14:06:11.948: E/AndroidRuntime(811): at dalvik.system.NativeStart.main(Native Method)
08-18 14:06:11.948: E/AndroidRuntime(811): Caused by: java.lang.IllegalStateException
08-18 14:06:11.948: E/AndroidRuntime(811): at android.media.MediaRecorder.start(Native Method)
08-18 14:06:11.948: E/AndroidRuntime(811): at radu.soundSampler.DisplayMessageActivity.onCreate(DisplayMessageActivity.java:30)
08-18 14:06:11.948: E/AndroidRuntime(811): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-18 14:06:11.948: E/AndroidRuntime(811): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
08-18 14:06:11.948: E/AndroidRuntime(811): ... 11 more
08-18 14:06:14.181: I/Process(811): Sending signal. PID: 811 SIG: 9
最佳答案
使用 setOutoutFile(getExternalFilesDir().getAbsolutePath() + "/newRecording")
确保你的 list 中有这个权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
不要执行忙等待循环。使用计时器。
不要在准备过程中忽略异常。
关于java - 在 Android 中录制声音并读取 Amplitude,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12018794/
我需要找到使用我的 iOS 应用程序的所有用户的列表以及他们所在的版本。 目前,我们正在使用振幅进行分析。 有什么方法可以使用振幅获取列表。 如果不能,可以使用 faSTLane Pilot 来完成吗
这可能更像是一个数学问题,而不是一个编程问题,所以如果违反任何规则,或者侮辱任何人的智慧,请随时删除。 我正在生成波,Y 轴为时间,X 轴为相位。 我卡在了......相位角(x 轴)振幅不随窗口大小
我正在将我的 React Native 应用程序连接到 Amplitude 分析,并想知道是否可以将原始 API key 放入代码中。用户可以查看此内容,以便理论上他们可以开始使用 API key 并
我正在将amplitude.js 与animatedModal.js 结合起来,只是想稍微调整一下以使一切完美运行。目前,当我关闭模式时,振幅中的 mp3 会继续播放。我想让它在关闭模式时暂停 mp3
我正在尝试制作一个应用程序来录制一秒钟的声音,然后从录制的声音中读取最大幅度。这是我目前所拥有的,但我的应用程序崩溃了,我不知道为什么。 这是我的第二个 Activity ,我在按下“记录”按钮后调用
我已经在ios项目中安装了amplitude。我能够将事件发送到振幅。我能够在仪表板中看到事件。 但我无法在仪表板中看到应用程序关闭事件。 请在下面找到附加的代码。 func applicationW
我正在尝试使用 Amplitude SDK 从我的 Ionic 3 应用程序获取统计信息。然而,由于该应用程序是用 TypeScript 编写的,具有一定的文件架构,因此它并不像 official d
我之前搞砸了这个问题。我听起来好像是在询问我的特定实现,但我的问题实际上是关于一般主题的。我非常有信心,我的实现没问题。所以我重写了这个问题: WASAPI 提供有关音频引擎在共享模式下接受的音频格式
在 Android 上,我发现可以定期使用 getMaxAmplitude 来显示录音的幅度。 iOS有同样的功能吗?我想在从麦克风录音时显示输入语音音量表。 最佳答案 假设您使用 AVAudioRe
我想使用 MediaRecorder 来录制声音,然后想计算随着声音的变化上下移动 Bars 的“振幅”。我还没有找到任何合适的解决方案。有什么建议。??编辑:我现在设法解决了问题,问题是我已经尝试使
我正在使用 npm、webpack、babel 环境来编写带有 p5.js 的应用程序。为了能够将草图作为模块,我在 instance mode 中有草图并将库和附加组件作为模块导入: import
我需要(以数字方式)计算函数的一阶和二阶导数,为此我尝试同时使用 splrep 和 UnivariateSpline 来创建样条曲线插值函数的导数。 但是,对于幅度为 10^-1 或更低的函数,样条表
使用 React Native boiler plate with Expo and Redux ,我们喜欢使用振幅跟踪服务,该服务首先需要初始化 Amplitude.initialize(apiKe
我正在尝试将 Amplitude 集成到我的 React Native 项目中。我目前仍在开发应用程序并使用 Expo。我 try catch 的第一个事件是用户登录时。 const events =
我正在尝试将 Amplitude 集成到我的 React Native 项目中。我目前仍在开发应用程序并使用 Expo。我 try catch 的第一个事件是用户登录时。 const events =
我是一名优秀的程序员,十分优秀!