我想在通话期间录制来电和拨出线路的语音.我尝试了许多解决方案,否则可以在Moto Phones以外的设备上工作(在我的情况下,我已经尝试过Moto E(第二代),Moto G5和Moto C).我试过这两个库:
03-07 10:56:57.307 293-9261 /?E/AudioRecord:无法获取记录源4的音频输入,采样率8000,格式0x1,通道掩码0x10,会话3494,标志0 03-07 10:56:57.308 293-9261 /?E/StagefrightRecorder:音频源未初始化03-07 10:56:57.309 7290-7290/com.callrecorder.android E/MediaRecorder:开始失败:-2147483648 03-07 10:56:57.314 7290-7290/com.callrecorder .android E /呼叫记录器:无法设置记录器.java.lang.RuntimeException:启动失败.在android.app.MediaRecorder.start(Native Method)的com.callrecorder.android.RecordService.startRecording(RecordService.java:194)at com.callrecorder.android.RecordService.onStartCommand(RecordService.java:92)at android.app .ActivityThread.handleServiceArgs(ActivityThread.java:3028)位于android.app.Handler.dispatchMessage上的android.app.ActivityThread.-wrap17(ActivityThread.java)android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1452) (Handler.java:102)在android.app.Looper.loop(Looper.java:148)的android.app.ActivityThread.main(ActivityThread.java:5443)java.lang.reflect.Method.invoke(Native Method) )com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:728)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
根据官方Android文档
从VOICE_CALL源捕获需要CAPTURE_AUDIO_OUTPUT权限.此权限保留供系统组件使用,不可用于第三方应用程序.
因此,我尝试将AudioSource更改为AudioSource.VOICE_COMMUNICATION无崩溃的工作.但是无法记录传入的声音.它只记录传出的声音.我尝试过同样AudioSource.DEFAULT但又没有运气.它的行为与...相同AudioSource.VOICE_COMMUNICATION
这个库在NDK级别有一些调整.但是,这也给出了与上面的库相同的结果AudioSource.VOICE_COMMUNICATION
根据MOTO的官方论坛,这个讨论主题摩托罗拉官员表示,他们不支持内部的VOICE CALL录制,但某些第三方应用程序可能会这样做.哪个是对的.Play商店中的自动呼叫记录器应用程序提供相同的工作解决方案.我无法找到它做了什么样的修改,这给了它一个有效的解决方案.任何帮助,将不胜感激
我正在创建一个Android应用程序(最低API级别16),可以从我的Android设备打印文档,其中打印机通过USB连接.我找到了一个从此链接检测USB的代码.我通过USB连接了打印机(HP Laserjet P1007).但它无法检测到打印机.
编辑
我在检测打印机方面取得了一些进展.我能够检测到打印机.但我仍然无法通过批量转移进行打印.我也试过使用方法进行异步传输usbRequest.queue
这是我的代码
public class MainActivity extends Activity {
private final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION";
PendingIntent mPermissionIntent;
UsbManager usbManager;
UsbDevice device;
UsbDevice printer = null;
private static final int PRINTER_VENDOR_ID = 1008;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
setContentView(R.layout.activity_main);
Log.i("Info", "Activity started");
usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList();
if (deviceList.size() <= 0) {
Log.i("Info", "No device found");
} else {
Log.i("Info", "Number of device : " + deviceList.size());
((TextView) findViewById(R.id.deviceCount)) …Run Code Online (Sandbox Code Playgroud)