我寫這本教程自定義相機應用: http://marakana.com/forums/android/examples/39.html的Android定製相機的結果圖像方向
現在我能夠使用相機,讓用戶後的圖像數據點擊一個按鈕。 但我得到了預覽人行道所以我在surfaceCreated
@Override
public void surfaceCreated(SurfaceHolder holder) {
// Open the camera when the preview is created
Log.d("Callback", "[surfaceCreated]");
theCamera = Camera.open();
Display display = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int displayRotation = display.getRotation();
switch (displayRotation) {
case Surface.ROTATION_0: theCamera.setDisplayOrientation(90); break;
case Surface.ROTATION_90: break;
case Surface.ROTATION_180: break;
case Surface.ROTATION_270: theCamera.setDisplayOrientation(180); break;
}
}
添加以下代碼預覽很好的問題。 但是,當我得到圖像數據時,我使用BitmapFactory.decodeByteArray
來獲取位圖,並將其設置爲我的xml佈局中定義的imageView。
這裏是我的main.xml
<SurfaceView
android:id="@+id/previewSurfaceView"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="250px" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="Button" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:maxHeight="100dp"
android:maxWidth="100dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_launcher" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="fill_parent"
android:layout_height="250px" >
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="Button" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:maxHeight="100dp"
android:maxWidth="100dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_launcher" />
</LinearLayout>
previewSurfaceView是小觀點,即相機預覽
按鈕1和按鈕2的按鈕,當我點擊,相機捕捉圖像並設置與imageView1/imageView2對應的圖像數據
存在一些問題:
我設置佈局寬度和高度,也是最大寬度和高度100dp,也是規模型向fitCenter。但它似乎不會顯示爲我想要的。我希望圖像顯示在邊界內。我在佈局設置中做錯了嗎?
即使我以縱向模式拍攝照片,圖像始終處於風景中。
此外,我想添加一個按鈕來切換上/下車拍照,但我無法弄清楚如何做到這一點。
有人可以爲我提出解決方案嗎?謝謝。
對不起,我上面發佈了錯誤代碼。我在表面視圖中沒有問題。但是我怎樣才能獲得圖像數據的方向。看來,我不能從數據中獲得EXIF – Hanon 2012-02-07 08:37:24