我成功地使用SonyEricsson的相機拍攝了一張照片。拍攝的照片看起來很好,通常情況下,我用景觀視圖來拍攝我的活動。增加用Android相機拍攝的照片的大小
問題是,拍攝的照片不是全屏幕......它只能拍攝我屏幕的50%,而我無法將它變大。 這是我如何做的:
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Log.e(TAG, "onCreate");
Bundle extras = getIntent().getExtras();
getWindow().setFormat(PixelFormat.TRANSLUCENT);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.editphoto);
mSurfaceView = (SurfaceView) findViewById(R.id.surface_camera);
mSurfaceView.setOnClickListener(this);
mSurfaceHolder = mSurfaceView.getHolder();
mSurfaceHolder.addCallback(this);
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mSurfaceHolder.setFixedSize(getWindow().getWindowManager()
.getDefaultDisplay().getWidth(), getWindow().getWindowManager()
.getDefaultDisplay().getHeight());
}
這裏是我的surfaceChanged()
方法:
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
Log.e(TAG, "surfaceChanged");
if (mPreviewRunning) {
mCamera.stopPreview();
}
Camera.Parameters p = mCamera.getParameters();
List<Size> sizes = p.getSupportedPictureSizes();
System.out.println("Lista de parametrii este urmatoarea:"+sizes);
Size size = sizes.get(0);
p.setPreviewSize(640, 480);
p.setPictureSize(size.width,size.height);
mCamera.setParameters(p);
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mCamera.startPreview();
mPreviewRunning = true;
}
我試圖獲得與所有支持圖片大小使用,使用這種方法的列表:
List<Size> sizes = p.getSupportedPictureSizes();
其返回如下:
[[email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]]
我要做的就是循環列表和設置我的圖片的大小,以獲得更大的尺寸:
Size size = sizes.get(0);
p.setPictureSize(size.width,size.height);
我也做:sizes.get(1)
,sizes.get(2)
,sizes.get(3)
..... sizes.get(8)
。
現在的問題是,當我做:
Size size = sizes.get(0);
p.setPictureSize(size.width,size.height);
我的屏幕變成黑屏,過了一段時間我在logcat中得到這個錯誤:
WIN DEATH: null
Failed looking up window
java.lang.IllegalArgumentException: Requested window [email protected] does not exist
at com.android.server.WindowManagerService.windowForClientLocked(WindowManagerService.java:8180)
at com.android.server.WindowManagerService.windowForClientLocked(WindowManagerService.java:8171)
at com.android.server.WindowManagerService$WindowState$DeathRecipient.binderDied(WindowManagerService.java:7029)
at android.os.BinderProxy.sendDeathNotice(Binder.java:389)
at dalvik.system.NativeStart.run(Native Method)
,當我嘗試:sizes.get(1)
, sizes.get(2)
,sizes.get(3)
..... sizes.get(8)
它的作品,但我的照片是這樣的:
http://i53.tinypic.com/2ib2crn.png
那麼究竟是什麼應該怎樣做才能得到一個全屏幕的畫面?謝謝