2017-04-20 3 views
0

現在、メディアレコーダーを使用してビデオレコーダーを作成しようとしています。ビデオの向きは、時計回りに90度回転して表示されます(基本的にランドスケープモード)。私はそれが肖像画の中でビデオを撮ることができるようにしたい。MediaRecorderがSurfaceViewを回転して画面の向きに合わせる

自分のコードから、カメラの変数がメディアレコーダーに直接セットされていないことがわかります。これは、コードが非推奨であることを示しているためです。誰でも助けてくれますか?

public void recordVideo() 
    { 
     isRecording = false; 
     mediaRecorder = new MediaRecorder(); 
     initMediaRecorder(); 

     //recorderView is my surfaceView// 
     surfaceHolder = recorderView.getHolder(); 
     surfaceHolder.addCallback(surfaceCallback); 
     surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 

     toggleRecordButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) 
      { 
       if(isRecording) 
       { 
        mediaRecorder.stop(); 
        timer.cancel(); 
        mediaRecorder.release(); 
        toggleRecordButton.setText("START"); 

        mediaRecorderLayout.setVisibility(View.GONE); 
        mPictureHelper.fetchCompressedUri(Environment.getExternalStorageDirectory().getPath()+"/myVideo.mp4"); 
       } 
       else 
       { 
        seconds = 0; 
        mediaRecorder.start(); 
        timer = new Timer(); 
        timer.scheduleAtFixedRate(new TimerTask() { 
         @Override 
         public void run() 
         { 
          getActivity().runOnUiThread(new Runnable() { 
           @Override 
           public void run() 
           { 
            if (seconds < 10) 
            { 
             tvTimer.setText("00:0"+seconds); 
            } 
            else 
            { 
             tvTimer.setText("00:"+seconds); 
            } 
            seconds++; 
           } 
          }); 
         } 
        },0,1000); 

        isRecording = true; 
        toggleRecordButton.setText("STOP"); 
       } 
      } 
     }); 
    } 

    private void initMediaRecorder() 
{ 
    String path = Environment.getExternalStorageDirectory().getPath()+"/myVideo.mp4"; 

    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 
    mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
    CamcorderProfile camcorderProfile_HQ = CamcorderProfile.get(CamcorderProfile.QUALITY_480P); 
    mediaRecorder.setProfile(camcorderProfile_HQ); 
    mediaRecorder.setOutputFile(path); 

    mediaRecorder.setMaxDuration(60000); // Set max duration 60 sec. 
    mediaRecorder.setMaxFileSize(10000000); 
} 

SurfaceHolder.Callback surfaceCallback = new SurfaceHolder.Callback() { 
    @Override 
    public void surfaceCreated(SurfaceHolder holder) { 
     prepareMediaRecorder(); 
    } 

    @Override 
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 

    } 

    @Override 
    public void surfaceDestroyed(SurfaceHolder holder) { 

    } 
}; 
private void prepareMediaRecorder() 
{ 
    mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface()); 
    try 
    { 
     mediaRecorder.prepare(); 
    } 
    catch (IllegalStateException e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    catch (IOException e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

を次のように私のコードは、私がこれについての他の記事をチェックアウトしたが、それらはすべて、使用されることに使用されるコードの多くが廃止されているという事実に時代遅れに見えます。私は誰かが助けることを望む。おかげ

答えて

0

はmanifest.xmlに

<activity 
     android:name=".activity_class_name" 
     android:screenOrientation="portrait" /> 
+0

でこれを追加それは表面図の肖像画になりますが、撮影した動画はまだ – Janwilx72

+0

ここを見て回転させたまま。可能性があります:http://stackoverflow.com/questions/30349897/android-video-orientation-changes-on-mediarecorder-start – Lcukerd

関連する問題