2016-07-28 9 views
0

ボタンを押すとMainActivityがCameraActivityに変更され、カメラのプレビューと進行状況バーが表示されます。ただし、アクティビティが切り替わる直前にプログレスバーが表示されますので、MainActivityのプログレスバーを1秒間表示することになります。これを引き起こす原因は何ですか?ありがとうAndroid - 次のアクティビティからの表示が早すぎます

ここにいくつかの関連コードがあります。

MainActivity.java

public void openCamera(View view) { 
    if (getCameraInstance() == null) { 
     Toast.makeText(FeedActivity.this, "Camera is unavailable right now", Toast.LENGTH_LONG).show(); 
    } else { 
     Intent i = new Intent(MainActivity.this, CameraActivity.class); 
     startActivity(i); 
    } 
} 

CameraActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_camera); 

    getSupportActionBar().hide(); 

    progressBar = (ProgressBar) findViewById(R.id.progressBar); 
    animation = ObjectAnimator.ofInt(progressBar, "progress", 0, 100); 
    animation.setDuration(10000); 
    animation.setInterpolator(new LinearInterpolator()); 

    // Create an instance of Camera 
    mCamera = getCameraInstance(); 

    // Create our Preview view and set it as the content of our activity. 
    mPreview = new CameraPreview(this, mCamera, currentCameraId); 
    preview = (FrameLayout) findViewById(R.id.camera_preview); 
    preview.addView(mPreview); 


} 

/** A safe way to get an instance of the Camera object. */ 
public static Camera getCameraInstance(){ 
    Camera c = null; 
    try { 
     c = Camera.open(); // attempt to get a Camera instance 
    } 
    catch (Exception e){ 
     // Camera is not available (in use or does not exist) 
    } 
    return c; // returns null if camera is unavailable 
} 

答えて

1

チェックこの回答 - Is there any way to listen for when the camera has loaded in? cwac-camera

カメラが標準ビューよりも読み込み速度が遅いので、私の提案は、読み込みビューを作成することです(レイアウトにViewGroupを特別に作成することです)。デフォルトで表示されるはずです。長い間)、プログレスバーはデフォルトで隠れていなければなりません。

いくつかのコード

mCamera.setOneShotPreviewCallback(new Camera.PreviewCallback() { 
    @Override 
    public void onPreviewFrame(byte[] data, Camera camera) { 
     // camera is "loaded" 
     //show progressbar 
     //hide loading screen 
    }); 
+0

感謝。私はあなたが投稿したリンクをどのように使用するか分かりません。それを含む新しいクラスを作成し、代わりに新しいCameraPreviewと呼んでいますか?また、カメラの読み込み速度を最適化するために何かできることがあるので、中間のプレビュー(または読み込みプレビュー)を持つ必要はありません。 – Jill

+0

tryコールバックを使用するmCamera.setOneShotPreviewCallback(previewCallback);プレビューコールバックでプログレスバーを表示 –

+0

@Jillで私の更新された回答を確認 –

関連する問題