このコードはAndroid1.6以降で機能することがわかりました(2.1を使用して機能し、回転せずに縦向きモードでプレビューを表示します)
public void surfaceCreated(SurfaceHolder holder){
try{
camera = Camera.open();
setDisplayOrientation(camera, 90);
camera.setPreviewDisplay(holder);
camera.startPreview();
}catch(IOException e){
Log.d("CAMERA", e.getMessage());
}
}
protected void setDisplayOrientation(Camera camera, int angle){
Method downPolymorphic;
try
{
downPolymorphic = camera.getClass().getMethod("setDisplayOrientation", new Class[] { int.class });
if (downPolymorphic != null)
downPolymorphic.invoke(camera, new Object[] { angle });
}
catch (Exception e1)
{
}
}
アクティビティには、AndroidManifest.xmlにandroid:screenOrientation="portrait"があります
http://code.google.com/p/android/issues/detail?id=1193#c42