綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] android ipcamera 串流

[複製連結] 查看: 1228|回覆: 0|好評: 0
跳轉到指定樓層
樓主
deenya | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2013-4-15 16:02

馬上加入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 按下後,要出現錄影畫面 和 串流這部份
請問應該要在實做才好呢?
謝謝各位的幫忙協助
                             
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則