ウェブカメラとしてAndroidを使用しようとしています。私のコードはAPI < = 22で完璧に動作しています。私はParcelFileDescriptor
のcreatePipe()
メソッドを使って読み書き用のパイプを作成しています。要するにMediaRecorder Android 6.0(API 23)で使用する「Seekable」ファイルディスクリプタ
は、パイプへの私の文章は次のようになります。
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でその彼らはchangeを作成し、MediaRecorder
がシーク可能でないファイル記述子で動作するのを防いだ。
ParcelFileDescriptor
createPipe()
と一緒に使用するとシーク可能ではないようです。
私の質問は、どうすればそれをシークアブルにすることができますか?それに代わるものはありますか?おかげさまで
私もこの種の問題があります。私はLocalSocketsとソケットを使用しようとしましたが、FileDescriptorsを使用することはできません。 – neilQ5