In the future, we will officially support portrait mode camera. Cupcake will have "unofficial" support (there will be a way to set it to portrait mode through the setParameter interface), but I don't know if we'll be able to make that work for other hardware.
On Mar 10, 3:11 am, "Jun'ichi Hirayama" <hiraya...@gmail.com> wrote: > Hi David > > will you officially support the camera API in portrait mode? > > On Wed, Feb 18, 2009 at 1:08 AM, Dave Sparks <davidspa...@android.com>wrote: > > > > > > > This code shouldn't even compile, this line is wrong: > > > mCamera.takePicture(null, mPictureCallback); // requires 3 callback > > functions > > > Camera is only supported in landscape mode. Cupcake release will > > "unofficially" support portrait mode (there will be no API for it, but > > I'll probably put some sample code out that shows how to do it). > > > On Feb 16, 9:35 pm, cindy <ypu01...@yahoo.com> wrote: > > > I tried google's camera API sample code. I found there are 2 problems: > > > 1> It only can take picture in Landscape orientation > > > 2> After click the space "key", the application crashes. WOw:) > > > > XML: > > > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/ > > > android" > > > android:layout_width="fill_parent" > > > android:layout_height="fill_parent" > > > android:orientation="vertical"> > > > <SurfaceView android:id="@+id/surface" > > > android:layout_width="fill_parent" > > > android:layout_height="10dip" > > > android:layout_weight="1"> > > > </SurfaceView> > > > </LinearLayout> > > > Java code: > > > /** > > > * Copyright (c) 2007, Google Inc. > > > * > > > * Licensed under the Apache License, Version 2.0 (the "License"); > > > * you may not use this file except in compliance with the License. > > > * You may obtain a copy of the License at > > > * > > > * http://www.apache.org/licenses/LICENSE-2.0 > > > * > > > * Unless required by applicable law or agreed to in writing, > > > software > > > * distributed under the License is distributed on an "AS IS" BASIS, > > > * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or > > > implied. > > > * See the License for the specific language governing permissions > > > and > > > * limitations under the License. > > > */ > > > > package com.android.cameraapitest; > > > > import android.app.Activity; > > > import android.content.Intent; > > > import android.graphics.Canvas; > > > import android.graphics.Paint; > > > import android.graphics.PixelFormat; > > > import android.graphics.Rect; > > > import android.net.Uri; > > > import android.os.Handler; > > > import android.os.Message; > > > import android.os.Bundle; > > > import android.provider.MediaStore.Images; > > > import android.provider.MediaStore.Video; > > > import android.view.Menu; > > > import android.view.MenuItem; > > > import android.view.SurfaceHolder; > > > import android.view.SurfaceView; > > > import android.view.KeyEvent; > > > import android.hardware.Camera; > > > > import android.util.Log; > > > > public class CameraApiTest extends Activity implements > > > SurfaceHolder.Callback > > > { > > > private static final String TAG = "CameraApiTest"; > > > Camera mCamera; > > > boolean mPreviewRunning = false; > > > > public void onCreate(Bundle icicle) > > > { > > > super.onCreate(icicle); > > > > Log.e(TAG, "onCreate"); > > > > getWindow().setFormat(PixelFormat.TRANSLUCENT); > > > > setContentView(R.layout.camera_api_test); > > > mSurfaceView = (SurfaceView)findViewById(R.id.surface); > > > > mSurfaceHolder = mSurfaceView.getHolder(); > > > mSurfaceHolder.addCallback(this); > > > mSurfaceHolder.setType > > > (SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); > > > } > > > > public boolean onCreateOptionsMenu(android.view.Menu menu) { > > > MenuItem item = menu.add(0, 0, 0, "goto gallery"); > > > item.setOnMenuItemClickListener(new > > > MenuItem.OnMenuItemClickListener() { > > > public boolean onMenuItemClick(MenuItem item) { > > > Uri target = Uri.parse("content://media/external/ > > > images/media"); > > > Intent intent = new Intent(Intent.ACTION_VIEW, > > > target); > > > startActivity(intent); > > > return true; > > > } > > > }); > > > return true; > > > } > > > > @Override > > > protected void onRestoreInstanceState(Bundle savedInstanceState) > > > { > > > super.onRestoreInstanceState(savedInstanceState); > > > } > > > > Camera.PictureCallback mPictureCallback = new > > > Camera.PictureCallback() { > > > public void onPictureTaken(byte[] data, Camera c) { > > > Log.e(TAG, "PICTURE CALLBACK: data.length = " + > > > data.length); > > > mCamera.startPreview(); > > > } > > > }; > > > > public boolean onKeyDown(int keyCode, KeyEvent event) > > > { > > > if (keyCode == KeyEvent.KEYCODE_BACK) { > > > return super.onKeyDown(keyCode, event); > > > } > > > > if (keyCode == KeyEvent.KEYCODE_SPACE) { > > > mCamera.takePicture(null, mPictureCallback); > > > return true; > > > } > > > > return false; > > > } > > > > protected void onResume() > > > { > > > Log.e(TAG, "onResume"); > > > super.onResume(); > > > } > > > > protected void onSaveInstanceState(Bundle outState) > > > { > > > super.onSaveInstanceState(outState); > > > } > > > > protected void onStop() > > > { > > > Log.e(TAG, "onStop"); > > > super.onStop(); > > > } > > > > public void surfaceCreated(SurfaceHolder holder) > > > { > > > Log.e(TAG, "surfaceCreated"); > > > mCamera = Camera.open(); > > > //mCamera.startPreview(); > > > } > > > > public void surfaceChanged(SurfaceHolder holder, int format, int > > > w, int h) > > > { > > > Log.e(TAG, "surfaceChanged"); > > > > // XXX stopPreview() will crash if preview is not running > > > if (mPreviewRunning) { > > > mCamera.stopPreview(); > > > } > > > > Camera.Parameters p = mCamera.getParameters(); > > > p.setPreviewSize(w, h); > > > mCamera.setParameters(p); > > > mCamera.setPreviewDisplay(holder); > > > mCamera.startPreview(); > > > mPreviewRunning = true; > > > } > > > > public void surfaceDestroyed(SurfaceHolder holder) > > > { > > > Log.e(TAG, "surfaceDestroyed"); > > > mCamera.stopPreview(); > > > mPreviewRunning = false; > > > mCamera.release(); > > > } > > > > private SurfaceView mSurfaceView; > > > private SurfaceHolder mSurfaceHolder; > > > > } > > -- > BR > Jun'ichi --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---