0

私はAndroidカメラアプリに取り組んでいます.撮影した画像にグリーンスクリーンクロマキー効果が欲しいです. http://code.google.com/p/chroma-key-project/downloads/listこのクロマ キー プロジェクトを自分のコードで使用しました。

バックカメラの代わりにフロントカメラを備えたタブレットを使用しています..フロントカメラの許可も使用しています

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

    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.front" />

それでも、preview.javaページからこの行へのエラーnullポインタ例外が表示されます。camera.setPreviewDisplay(holder);// <9> なぜ?

preview.javaクロマキープロジェクトの指定されたリンクからページを確認してください.提案してください.

このタイプのエラーが発生しています。

10-11 15:37:36.131: W/dalvikvm(11339): threadid=1: キャッチされない例外で終了するスレッド (group=0x409ee1f8) 10-11 15:37:36.141: E/AndroidRuntime(11339): 致命的な例外: メイン10-11 15:37:36.141: E/AndroidRuntime(11339): java.lang.UnsupportedOperationException 10-11 15:37:36.141: E/AndroidRuntime(11339): java.lang.Thread.stop(Thread.java: 1076) 10-11 15:37:36.141: E/AndroidRuntime(11339): java.lang.Thread.stop(Thread.java:1063) 10-11 15:37:36.141: E/AndroidRuntime(11339): at com.Activity.new2you4kids.MainClass.startCamera(MainClass.java:179) 10-11 15:37:36.141: E/AndroidRuntime(11339): com.Activity.new2you4kids.MainClass$1.handleMessage(MainClass.java:61) 10-11 15:37:36.141: E/AndroidRuntime(11339): android.os.Handler.dispatchMessage(Handler.java:99) で 10-11 15:37:36.141: E/AndroidRuntime(11339): Android で。 os.ルーパー。ループ (Looper.java:137) 10-11 15:37:36.141: E/AndroidRuntime(11339): android.app.ActivityThread.main(ActivityThread.java:4424) 10-11 15:37:36.141: E/ AndroidRuntime(11339): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 10-11 15:37:36.141: E/AndroidRuntime(11339): java.lang.reflect.Method.invoke(Method.java: 511) 10-11 15:37:36.141: E/AndroidRuntime(11339): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 10-11 15:37:36.141: E/ AndroidRuntime(11339): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 10-11 15:37:36.141: E/AndroidRuntime(11339): dalvik.system.NativeStart.main(Native方法)lang.reflect.Method.invokeNative(ネイティブ メソッド) 10-11 15:37:36.141: E/AndroidRuntime(11339): java.lang.reflect.Method.invoke(Method.java:511) 10-11 15:37 :36.141: E/AndroidRuntime(11339): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 10-11 15:37:36.141: E/AndroidRuntime(11339): com. Android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 10-11 15:37:36.141: E/AndroidRuntime(11339): dalvik.system.NativeStart.main(ネイティブ メソッド) でlang.reflect.Method.invokeNative(ネイティブ メソッド) 10-11 15:37:36.141: E/AndroidRuntime(11339): java.lang.reflect.Method.invoke(Method.java:511) 10-11 15:37 :36.141: E/AndroidRuntime(11339): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 10-11 15:37:36.141: E/AndroidRuntime(11339): com. Android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 10-11 15:37:36.141: E/AndroidRuntime(11339): dalvik.system.NativeStart.main(ネイティブ メソッド) でメイン (ZygoteInit.java:551) 10-11 15:37:36.141: E/AndroidRuntime (11339): dalvik.system.NativeStart.main (ネイティブ メソッド) でメイン (ZygoteInit.java:551) 10-11 15:37:36.141: E/AndroidRuntime (11339): dalvik.system.NativeStart.main (ネイティブ メソッド) で

ありがとう!

4

1 に答える 1

2

Camera.open() はデフォルトの背面カメラを開こうとするので、背面にカメラがないため null を返します。

関数 Camera.open(int) を試して前面カメラを開くとどうなりますか?

このような:

int getFrontCameraId() {
    CameraInfo ci = new CameraInfo();
    for (int i = 0 ; i < Camera.getNumberOfCameras(); i++) {
        Camera.getCameraInfo(i, ci);
        if (ci.facing == CameraInfo.CAMERA_FACING_FRONT) return i;
    }
    return -1; // No front-facing camera found
}

そして、次のように取得します。

int index = getFrontCameraId();
if (index == -1) error();
Camera c = Camera.open(index);

From:フロントカメラがあるかどうか、およびフロントカメラに到達して使用する方法があるかどうかを検出する方法は?

編集:使用しているコードは非常に古く、あらゆる種類の古い機能があります。クラッシュは古いスレッド機能(停止)が原因だと思います。

リンクからのコード:

  public void startCamera() {
        setContentView(R.layout.camview);
        fGameView = null;
        fGameThread.stop();
        fGameThread=null;

開発者サイトによると:

stop() このメソッドは非推奨です。この方法でスレッドを停止することは安全ではなく、アプリケーションと VM が予測できない状態になる可能性があるためです。

見る:

スプラッシュ画面の起動時に java.lang.UnsupportedOperationException が発生する

http://developer.android.com/reference/java/lang/Thread.html#stop()

2 つを編集します。

onCreateOptionsMenu コードをこれに変更します。myMenu 変数は使用しないでください。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    menu.add(0, MENU_START, 0, R.string.menu_start);
    menu.add(0, MENU_SEND, 0, R.string.menu_send);
    return true;
}
于 2012-10-11T09:55:00.770 に答える