私は簡単な質問のためにすみません、私は完全に初心者のJavaとアンドロイドの開発者です。 surfaceChangedが呼び出されたときに、setCameraDisplayOrientationでActivityのインスタンスを取得する方法は?そう... public static Activity activity = this;
が、私はどこでも使用してからそれを参照することができるようにアクティビティインスタンスを取得
public class MyActivity extends Activity
{
private Camera mCamera;
private CameraPreview mPreview;
public final int cameraId = 0;
public Activity activity = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
activity = this;
// 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);
FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
preview.addView(mPreview);
}
public void setCameraDisplayOrientation(Activity activity,
int cameraId, android.hardware.Camera camera) {
}
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder mHolder;
private Camera mCamera;
...
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
...
setCameraDisplayOrientation(activity, cameraId, mCamera);
....
}
}
}
なぜインスタンスが必要ですか。そのオーバーライドされたメソッドは、いくつかのアクティビティコンテキストを持ちます。でも、もしあなたが望むなら、 'MyActivity.this'を使ってみてください。 – Rajkiran
私は' this'を使っていますが、surfaceChangedが呼び出されたときにプログラムがクラッシュします。 OK。なぜプログラムがクラッシュするのか再度確認します。私はこのインスタンスをコンテキストで呼び出す必要があります: 'activity.getWindowManager()。getDefaultDisplay() \t .getRotation()' – psct