所以我正在尝试将我的 Android 用作网络摄像头。我的代码非常适合 API <= 22。我正在使用ParcelFileDescriptor
'screatePipe()
方法来创建用于读取和写入的管道。
简而言之,我写给管道的内容如下所示:
ParcelFileDescriptor[] parcelFileDescriptors = ParcelFileDescriptor.createPipe();
ParcelFileDescriptor mParcelWrite =new ParcelFileDescriptor(mParcelFileDescriptors[1]);
MediaRecorder mMediaRecorder = new MediaRecorder();
mMediaRecorder.setOutputFile(mParcelWrite.getFileDescriptor());
..
..// Other settings.
mMediaRecorder.start();
当我运行它时,我得到以下异常,
E/MediaRecorder: start failed: -2147483648
W/System.err: java.lang.RuntimeException: start failed. W/System.err: at android.media.MediaRecorder.start(Native Method)
W/System.err: at com.ksy.recordlib.service.recoder.RecoderVideoSource.prepare(RecoderVideoSource.java:105)
W/System.err: at com.ksy.recordlib.service.recoder.RecoderVideoSource.run(RecoderVideoSource.java:173)
W/System.err: at java.lang.Thread.run(Thread.java:818)
我知道,在 API 23 中,他们做了一个改变,阻止MediaRecorder
了使用不可搜索的文件描述符。
ParcelFileDescriptor
与 with 一起使用时createPipe()
似乎不可搜索。
我的问题是,我怎样才能使它可搜索?有什么替代方案吗?谢谢。