2017-02-03 22 views
-1

スナップチャットと同様に、アプリの起動時にカメラをバックグラウンドで開くアプリを作成しています。私が現在使用しているコードでは、使用していない部分があり、修正方法はわかりません。どんな助けもありがとうございます。私のコードは以下の通りです。アプリの起動時にカメラを開く

public class CameraView extends SurfaceView implements SurfaceHolder.Callback { 

private SurfaceHolder mHolder; 
private Camera mCamera; 

public CameraView(Context context, Camera camera) { 

    super(context); 
    mCamera = camera; 
    mCamera.setDisplayOrientation(90); 
    //get the holder and set this class as the callback, so we can get camera data here 
    mHolder = getHolder(); 
    mHolder.addCallback(this); 
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_NORMAL); 
} 

public CameraView(Launcher launcher, android.hardware.Camera mCamera) { 
    super(launcher, (AttributeSet) mCamera); 
} 

@Override 
public void surfaceCreated(SurfaceHolder surfaceHolder) { 
    try{ 
     //when the surface is created, we can set the camera to draw images in this surfaceholder 
     mCamera.setPreviewDisplay(surfaceHolder); 
     mCamera.startPreview(); 
    } catch (IOException e) { 
     Log.d("ERROR", "Camera error on surfaceCreated " + e.getMessage()); 
    } 
} 

@Override 
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i2, int i3) { 
    //before changing the application orientation, you need to stop the preview, rotate and then start it again 
    if(mHolder.getSurface() == null)//check if the surface is ready to receive camera data 
     return; 

    try{ 
     mCamera.stopPreview(); 
    } catch (Exception e){ 
     //this will happen when you are trying the camera if it's not running 
    } 

    //now, recreate the camera preview 
    try{ 
     mCamera.setPreviewDisplay(mHolder); 
     mCamera.startPreview(); 
    } catch (IOException e) { 
     Log.d("ERROR", "Camera error on surfaceChanged " + e.getMessage()); 
    } 
} 

@Override 
public void surfaceDestroyed(SurfaceHolder surfaceHolder) { 
    mCamera.stopPreview(); 
    mCamera.release(); 
} 

問題はこれらの行が推奨されなくなりました。

mCamera.setDisplayOrientation(90); 
mCamera.setPreviewDisplay(surfaceHolder); 
mCamera.startPreview(); 
mCamera.stopPreview(); 
mCamera.release(); 

私のXMLは以下のとおりです。

<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity"> 

    <FrameLayout 
     android:id="@+id/camera_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

    </FrameLayout> 

</FrameLayout> 
+1

唯一の非推奨です。それがうまくいかないというわけではありません。最新のコードを使いたい場合は 'Camera2 API'を使います。 – Piyush

+0

私はどのようにそれを実装するのですか、私は、アプリケーションを実行すると、それは動作しません、非推奨のコードがエラーとして表示されます。 –

+0

どのようなエラーが報告されますか? – Piyush

答えて

0

あなたはあなたのプロジェクトのセットアップや輸入の何か間違ったことがある - 古いカメラのAPIが廃止されましたが、それはどのような方法で使用されてからそれを防ぐことはできません。

コードスニペットがすべての場合、少なくともパッケージのインポートはありません。そうでない場合は、実際のエラーメッセージを投稿してください。

Android Studioは警告を表示することがありますが、すべてが正しく設定されていればそれだけです。

関連する問題