public class CamView extends Activity implements SurfaceHolder.Callback
{
 public String szDateTop ="";
    private Camera camera = null;
    private boolean isPreviewRunning = false;
    private SimpleDateFormat timeStampFormat = new SimpleDateFormat("yyyyMMddHHmmssSS");
    
    private SurfaceView surfaceView;
    private SurfaceHolder surfaceHolder;
    static final String TAG= "CamView";
    
    static final String[] IMAGE_PROJECTION = {      
  MediaStore.Images.ImageColumns.DATA, 
  MediaStore.Images.ImageColumns.DATE_TAKEN
  
 };
    Bitmap bm = null;
    public void onCreate(Bundle icicle)
    {
        super.onCreate(icicle);
        
        Activity activit = this;
        activit.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        
        Log.e(getClass().getSimpleName(), "onCreate");
        getWindow().setFormat(PixelFormat.TRANSLUCENT);
        setContentView(R.layout.main);
        surfaceView = (SurfaceView)findViewById(R.id.surface);
        surfaceHolder = surfaceView.getHolder();
        surfaceHolder.addCallback(this);
        surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        
       
        
        findViewById(R.id.main_btn_picture).setOnClickListener(mClickListener);
        findViewById(R.id.main_btn_repicture).setOnClickListener(mClickListener);
        findViewById(R.id.main_btn_send).setOnClickListener(mClickListener);
        
        
//        BackRunnable runnable = new BackRunnable();
//        Thread thread = new Thread(runnable);
//        thread.setDaemon(true);              //메인 쓰레드가 종료될 때 강제로 종료되는 쓰레드
//        thread.start();
        
        
        
        
    }
    public boolean onCreateOptionsMenu(android.view.Menu menu) {
        MenuItem item = menu.add(0, 0, 0, "View Pictures");
        item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            public boolean onMenuItemClick(MenuItem item) {
             Intent act_showvideo = new Intent(CamView.this, Image_List.class);
          startActivity(act_showvideo);
//                Intent intent = new Intent(Intent.ACTION_VIEW, targetResource);   // 저장된 이미지들을 모두 보여준다.
//                startActivity(intent);
                return true;
                
            }
        });
        return true;
       
    }
    protected void onRestoreInstanceState(Bundle savedInstanceState)
    {
        super.onRestoreInstanceState(savedInstanceState);
    }
    
   
    Camera.PictureCallback mPictureCallbackRaw = new Camera.PictureCallback() {
        public void onPictureTaken(byte[] data, Camera c) {
            camera.startPreview();
        }
    };
    
    Camera.ShutterCallback mShutterCallback = new Camera.ShutterCallback() {
     public void onShutter() {
     }
    };
    
     
    
    
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
     Image_Picture camDemo = null;
     if(keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
     try {
      String filename = timeStampFormat.format(new Date());
      ContentValues values = new ContentValues();
      values.put(Media.TITLE, filename);
      values.put(Media.DESCRIPTION, "Image from Android Emulator");
      Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
      camDemo = new Image_Picture( getContentResolver().openOutputStream(uri));
     } catch(Exception ex ){
      }
     }
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            return super.onKeyDown(keyCode, event);
        }
 
        if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
            camera.takePicture(mShutterCallback, mPictureCallbackRaw, camDemo);
            return true;
        }
        return false;
    }
    protected void onResume()
    {
        Log.e(getClass().getSimpleName(), "onResume");
        super.onResume();
    }
    protected void onSaveInstanceState(Bundle outState)
    {
        super.onSaveInstanceState(outState);
    }
    protected void onStop()
    {
     super.onStop();
    }
    
    
    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h)
    {
     Camera.Parameters parameters = camera.getParameters();  
     parameters.setPreviewSize(w, h);  
     camera.setParameters(parameters);  
     camera.startPreview();
     
     
             if (isPreviewRunning) {
            camera.stopPreview();
        }
        Camera.Parameters p = camera.getParameters();
        p.setPreviewSize(w, h);
        camera.setParameters(p);
        try {
   camera.setPreviewDisplay(holder);
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
        camera.startPreview();
        isPreviewRunning = true;
    }
    
    /* (non-Javadoc)
     * @see android.view.SurfaceHolder.Callback#surfaceCreated(android.view.SurfaceHolder)
     */
    public void surfaceCreated(SurfaceHolder holder)
    {
     
       camera = Camera.open();
       camera.getParameters().setRotation(90);
       
    }
    public void surfaceDestroyed(SurfaceHolder holder)
    {
        camera.stopPreview();
        isPreviewRunning = false;
        camera.release();
    }
    
 public boolean capture(Camera.PictureCallback jpegHandler){
  if(camera != null){
   camera.takePicture(null, null, jpegHandler);
   return true;
  }
  else{
   return false;
  }
 }
    
    
    Button.OnClickListener mClickListener = new View.OnClickListener() {
     public void onClick(View v){ 
      
     
      
      switch(v.getId()){ 
      
      case R.id.main_btn_send:
       
       
       
       
       if(bm != null){
        
                    try {
                        String fileUrl = MediaStore.Images.Media.insertImage(getContentResolver(), bm, "111", "222");
                        if (fileUrl == null) {
                           // Log.d("Still", "Image Insert failed");
                            return;
                        } else {
                            // Force the media scanner to go. Not required,
                            // but good for testing.
                            Uri picUri = Uri.parse(fileUrl);
                            
                            
                            sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, picUri));
                        }
                    } catch (Exception e) {
                        //Log.e("Still", "Error writing file", e);
                    }
                    bm = null;
                    
                    getImageArray(CamView.this, mClickListener);
                    
       
                    
       Intent act_showvideo = new Intent(CamView.this, Image_Transmit.class);
       act_showvideo.putExtra("Imgae_Path", szDateTop);
    startActivity(act_showvideo);
    
       finish();
    
    
//       String result = ""; 
//          MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager(); 
//          HttpClient client = new HttpClient(connectionManager);  
//          File f = new File("/sdcard/DCIM/Camera/1283412323927.jpg"); 
//          PostMethod filePost = new PostMethod(""); 
//          int nStatusCode =0 ;
//          try {  
//           Part[] parts = {
//               new StringPart("originalPath","/sdcard/DCIM/Camera/1283412323927.jpg"),
//                  new FilePart("fileData", "1283412323927.jpg", f) //new FilePart("attfile01",f.getName(), f,null,"UTF-8")
//      
//              }; 
//           
//           
//           filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams())); 
//            client.executeMethod(filePost);  
//            
//            result = filePost.getResponseBodyAsString();
//            /*
//            logger.debug("##########fileUpload##############"); 
//            logger.debug("filePost.getResponseCharSet()="+filePost.getResponseCharSet()); //UTF-8
//            logger.debug("filePost.getStatusCode()="+filePost.getStatusCode()); // 200
//            logger.debug("filePost.getStatusText()="+filePost.getStatusText()); // OK
//            logger.debug("filePost.getStatusLine()="+filePost.getStatusLine()); // HTTP/1.1 200 OK  
//            logger.debug("filePost.getResponseBodyAsString() \n "+filePost.getResponseBodyAsString());
//            logger.debug("##########fileUpload##############");
//            */
//            //return nStausCode;
//           //return result;
//          } catch (HttpException e) {      
//         
//           //Log.i(TAG,"file upload fail 1");
//           e.printStackTrace();
//          } catch (IOException e) {
//
//           //Log.i(TAG,"file upload fail 2");
//           e.printStackTrace();
//          } finally {
//           nStatusCode = filePost.getStatusCode();
//           filePost.releaseConnection();
//          }
         
//       NetUtil net = new NetUtil();
//       String[] tmpstr = null;
//       tmpstr = szDateTop.split("/");
//       
//       String file=tmpstr[4];
//         
//    try {
//     net.fileUpload("http://", szDateTop, file);
//    } catch (Exception e) {
//     // TODO Auto-generated catch block
//     Toast.makeText(CamView.this, "fail", Toast.LENGTH_SHORT).show();
//    }
      

      
      
      //1283412323927.jpg
      
      //Toast.makeText(CamView.this, "true", Toast.LENGTH_SHORT).show();
   }
   else{}
       
       
       break;
      
       case R.id.main_btn_picture:  
     
        capture(new Camera.PictureCallback() {
                        public void onPictureTaken(byte[] data, Camera camera) {
                           // Log.v("Still", "Image data received from camera");
                         bm = BitmapFactory.decodeByteArray(data, 0, data.length);
                        }
                    });
           break;
           
           
       case R.id.main_btn_repicture:
        camera.startPreview();
              isPreviewRunning = true;
              bm = null;
           //camera.takePicture(mShutterCallback, mPictureCallbackRaw, camDemo);
        break;
       
        
      }
     }
     
    };  
    
    
    public final ArrayList<String> getImageArray(final Context context, OnClickListener onClickListener)
 {
        final Uri uriImages = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;        
 
        final ContentResolver cr = context.getContentResolver();
        ArrayList<String> listPhoto = new ArrayList<String>();
        
        
        try{
         final Cursor cursorImages = cr.query(uriImages, IMAGE_PROJECTION, null, null, null);
         //final Cursor cursorImages = cr.query(uriImages, IMAGE_PROJECTION, null, null, "title ASC");
      if(cursorImages != null && cursorImages.moveToFirst()){         
          do{           
           
           szDateTop = cursorImages.getString(0);
           //String photoPath = cursorImages.getString(0);
           //String photoDate = cursorImages.getString(1);
           //Log.i(TAG, szDateTop);
           
           //Log.i(TAG, photoPath);
           //Log.i(TAG, photoDate);
           
                    
          }while(cursorImages.moveToNext());
          cursorImages.close();
          
          
   
      }
         
        }catch(Exception e){
         
        }
  return listPhoto;
 }
}


갤럭시A에서는 가로 세로 정방향으로 다 문제 없구요

현재 카메라 구동소스 인데요, 갤럭스S에서 문제가 발생합니다.

세로 모드로 했을 때는 화면은 나오는데 90도 회전이 되서 나오구요.

가로모드로 했을 때는 화면이 멈추어서 움직이지 않습니다. 그런데 찍으면 제대로 된 화면이 출력되더라구요.

세로모드 일 때 camera.getParameters().setRotation(90); 써서 카메라를 돌려볼려고 하는데 돌아가지 안습니다.

저는 세로 모드로 구현했으면 좋겠거든요. 카메라좀 돌아가게할 수 있는 방법이 있나요??

안되면 가로모드로 구현하는 방법도 괜찮습니다.

답변좀 부탁드리요!