2012-06-09 5 views
7

私はカメラプレビューデータのみを取得する必要がありますが、プレビューは表示されません。 サービスでこれをやっているので、ダミーのSurfaceViewを作成しなければなりませんでした。これはうまく動作します。カメラのプレビューのための不可視SurfaceView

は、私はこの答えからコードを使用しました: https://stackoverflow.com/a/10268650/1395697

しかし、TYPE_SYSTEM_OVERLAYと、それは動作しませんでした。見えませんでしたが、プレビューデータは受信されませんでした(onPreviewFrame())。この引数を0に変更すると、プレビューデータが表示されますが、SurfaceViewが表示されます。

他の方法がありますか?私が今やった

はちょうど1の幅と高さで見えるSurfaceViewを作り、あなたがSurfaceViewの色の変化が表示されないように、私は特定の色でImageViewオーバーレイを作成することです。しかし、これはまったくきちんとしていないし、私はそれを少し上手くやってみたいです。

+0

参照してくださいhttp://stackoverflow.com/questions/22462360/ – fadden

答えて

-1

SurfaceViewを実際にUIに配置する必要はありません。私たちは同じ問題を抱えていて、ダミーのSurfaceViewを作っていました。ここに私たちのコードは次のとおりです。

SurfaceView dummy = new SurfaceView(c); 
try { 
    mCamera.setPreviewDisplay(dummy.getHolder()); 
} catch (IOException e) { 

} 
mCamera.setPreviewCallback(this); 
mCamera.startPreview(); 
+2

私はあまりにも思った。ほとんどのデバイスはプレビュー表示なしでも動作するため、これらのデバイスでもメソッドは明らかに機能します。しかし、HTC One XやGoogle Nexus Oneのようなデバイスでは、SurfaceViewなしでも、あなたのメソッドでも動作しません。 – DominicM

+0

ホラーなことです。私たちの問題を解決していただきありがとうございます。私たちはそれをテストする必要もなかったので、何が起こっているのか分かりませんでした。とても有難い! :D –

+0

私はそれをテストする人はいませんでしたが、いくつかのバグ報告がありましたので、あなたの方法でアップデートをリリースしました。新しい更新で、それは最終的に(私の質問の方法で)働いたが、私の方法は本当に恐ろしいので、私はそれを改善したいと思うだろう。 – DominicM

1

私も同じStackOverflowの答えを使用して、同じproblem.soを得る:

私は代わりに、私のsurfaceChangedメソッドにこのコード

this.setZOrderOnTop(true); 
SurfaceHolder h = this.getHolder(); 
h.setFormat(PixelFormat.TRANSPARENT); 

を追加しましたそのアクティビティ(または私の場合はサービス)の、そしてそれはtrasparentだが、ログは放棄されたフレームに文句を言う:(

関連する問題