0

I'm playing with the Snapback SDK. When starting a WaveGestureHandler with microphone driven adapters (Snap, Blow) I get this error:

AudioFlinger could not create record track, status: -1
AudioRecord-JNI﹕ Error creating AudioRecord instance: initialization check failed with status -1.
android.media.AudioRecord﹕ Error code -20 when initializing native AudioRecord object.

  FATAL EXCEPTION: BlowDetector
Process: com.mypackage.app, PID: 27926
java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord.

How do I initialize this AudioRecord? I've looked at the provided examples but I can't find where to do it.

I'm testing on a Nexus 5 with Android L.

4

2 回答 2

1

使用麦克风的适配器需要在您的设备上写入一些临时数据,因此您必须为您的清单添加权限:

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

这将解决问题。

再见

于 2014-09-08T14:47:46.300 回答
0

您的麦克风是否可能被其他应用程序锁定,例如使用语音命令的系统应用程序(例如三星设备的 S 语音)?

Andorid L 是预览版,SDK 已经编译测试到 API-20 (4.4W)。在接下来的几天里,我们将开始在那个环境中测试我们的 SDK。您是否正在使用 Android L 编译您的应用程序?拜托,你能发布你的代码吗?

无论如何,您可以查看http://developer.snapback.io/tutorial.html,您可以在其中找到有关如何使用 Snapback SDK 创建应用程序的简单说明。我将在这里尝试解释如何使用 SDK 功能。你应该这样做:

public class YourMainActivity extends Activity implements WaveGestureListener

在您的 onCreate() 中:

waveGestureHandler = new WaveGestureHandler();
blowSensorAdapter = new BlowSensorAdapter(waveGestureHandler, this);
waveGestureHandler.setSensorAdapters(blowSensorAdapter);
waveGestureHandler.register(this);
waveGestureHandler.start();

并覆盖 onEvent() 方法:

@Override
public void onEvent(WaveGestureEvent event)
{
    //print something
    Log.d("", "" + event);
}

随时通知我们。

再见

于 2014-09-05T16:16:57.683 回答