馬上加入Android 台灣中文網,立即免費下載應用遊戲。
您需要 登錄 才可以下載或查看,沒有帳號?註冊
x
我想請問一下
public class Main extends Activity implements SurfaceHolder.Callback{
private static final int MENU_START_RECORDING = Menu.FIRST,
MENU_STOP_RECORDING = Menu.FIRST + 1,
MENU_VIEW_RECORDING = Menu.FIRST + 2;
private final String mFileName = "recorded_video.3gp";
private Camera mCamera;
private MediaRecorder mRecorder;
private SurfaceView mCamPreview;
private SurfaceHolder mSurfHolder;
private boolean mRecording = false;
private int mRotateDegree;
//wanru add start
private EditText pathEd;
private Button startbtn;
private String result="NG";
private MediaPlayer m;
String str;
private VideoView video;
private String current;
//wanru add end
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
*/
setContentView(R.layout.main);
pathEd=(EditText)findViewById(R.id.editText1);
str=pathEd.getText().toString();
startbtn=(Button)findViewById(R.id.button1);
startbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
CheckNetWorkConnect();
}
});
setupViewComponent();
}
private void CheckNetWorkConnect(){
try{
InputStream data = null;
result="OK";
}catch(Exception ex)
{
result="NG";
}
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
mRecorder = new MediaRecorder();
mCamera = Camera.open();
super.onResume();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
Log.i("wanru", "20");
mCamera.stopPreview();
mCamera.release();
mCamera = null;
super.onPause();
}
private void setupViewComponent() {
mCamPreview = (SurfaceView) findViewById(R.id.camPreview);
mSurfHolder = mCamPreview.getHolder();
mSurfHolder.addCallback(this);
mSurfHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
private void startRecording() {
try {
Log.i("video", "555");
mRecorder.setCamera(mCamera);
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
// mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
mRecorder.setOutputFile("/sdcard/" + mFileName);
mRecorder.setPreviewDisplay(mSurfHolder.getSurface());
mRecorder.setOrientationHint(mRotateDegree);
mRecorder.prepare();
mRecorder.start();
}
catch (Exception e) {
Toast.makeText(Main.this, "錄影錯誤", Toast.LENGTH_LONG).show();
}
}
public void surfaceCreated(SurfaceHolder holder) {
try {
mCamera.setPreviewDisplay(mSurfHolder);
Camera.CameraInfo camInfo = new Camera.CameraInfo();
Camera.getCameraInfo(0, camInfo);
int rotation = getWindowManager().getDefaultDisplay().getRotation();
int degrees = 0;
switch (rotation) {
case Surface.ROTATION_0:
degrees = 0; break;
case Surface.ROTATION_90:
degrees = 90; break;
case Surface.ROTATION_180:
degrees = 180; break;
case Surface.ROTATION_270:
degrees = 270; break;
}
mRotateDegree = (camInfo.orientation - degrees + 360) % 360;
mCamera.setDisplayOrientation(mRotateDegree);
mCamera.startPreview();
Camera.Parameters camParas = mCamera.getParameters();
if (camParas.getFocusMode().equals(Camera.Parameters.FOCUS_MODE_AUTO) ||
camParas.getFocusMode().equals(Camera.Parameters.FOCUS_MODE_MACRO))
mCamera.autoFocus(null);
else
Toast.makeText(this, "照相機不支援自動對焦!", Toast.LENGTH_SHORT)
.show();
} catch (Exception e) {
// TODO Auto-generated catch block
Toast.makeText(this, "照相機啟始錯誤!", Toast.LENGTH_LONG)
.show();
}
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
public void surfaceDestroyed(SurfaceHolder holder) {
if (mRecording) {
mRecorder.stop();
mRecording = false;
}
mRecorder.release();
finish();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, MENU_START_RECORDING, 0, "開始錄影");
menu.add(0, MENU_STOP_RECORDING, 0, "停止錄影");
menu.add(0, MENU_VIEW_RECORDING, 0, "撥放影片");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case MENU_START_RECORDING:
Log.i("test", "10");
mRecording = true;
Log.i("test", "11");
mCamera.stopPreview();
Log.i("test", "12");
mCamera.unlock();
Log.i("test", "13");
startRecording();
break;
case MENU_STOP_RECORDING:
mRecording = false;
mRecorder.stop();
try {
mCamera.reconnect();
mCamera.startPreview();
} catch (Exception e) {
// TODO Auto-generated catch block
Toast.makeText(this, "Camera 啟始錯誤!", Toast.LENGTH_LONG)
.show();
}
break;
case MENU_VIEW_RECORDING:
Intent it = new Intent();
it.setClass(Main.this, PlayVideo.class);
it.putExtra("FILE_NAME", mFileName);
startActivity(it);
break;
}
return super.onOptionsItemSelected(item);
}
}
button 按下後,要出現錄影畫面 和 串流這部份
請問應該要在實做才好呢?
謝謝各位的幫忙協助
|
|