X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fai%2Fsuanzi%2Frtmpclient%2FMainActivity.java;h=488650186b987453dafc7eb85862708f8437954c;hb=7a99b2b0d2cf8048e1d9dd7fae5ccf984a865b1e;hp=6531b9f4ad090e909e1a0f593c43e86478d9384c;hpb=f8fb13b9804d9b4b6fb227fbd07b80de9b092b55;p=rtmpclient.git diff --git a/app/src/main/java/ai/suanzi/rtmpclient/MainActivity.java b/app/src/main/java/ai/suanzi/rtmpclient/MainActivity.java index 6531b9f..4886501 100644 --- a/app/src/main/java/ai/suanzi/rtmpclient/MainActivity.java +++ b/app/src/main/java/ai/suanzi/rtmpclient/MainActivity.java @@ -53,18 +53,18 @@ import android.os.IBinder; public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback, Camera.PreviewCallback{ private static final String TAG = "PENG"; - private Ffmpeg ffmpeg; - private Camera mCamera ; - private StreamTask mStreamTask; + //private Ffmpeg ffmpeg; + //private Camera mCamera ; + //private StreamTask mStreamTask; private SurfaceHolder mHolder; private SurfaceView mSufaceView; //private UVCCamera uvcCamera; - ExecutorService mExecutor = Executors.newSingleThreadExecutor(); + //ExecutorService mExecutor = Executors.newSingleThreadExecutor(); //Intent it = new Intent(getApplicationContext(), MyService.class); Intent intent = new Intent(); - private UsbManager usbManager; - private UsbDevice usbCamera; + //private UsbManager usbManager; + //private UsbDevice usbCamera; private Logger gLogger; @@ -73,7 +73,12 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal private TextInputEditText mTextUser; private TextInputEditText mTextCamera; private String mMacAddr = ""; - private CameraView mCameraView; + //private CameraView mCameraView; + private String mRtmpUrl; + + boolean mBounded; + MyService mServer; + Intent mIntent; private void configLog(){ try { @@ -94,42 +99,29 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal private void init(){ configLog(); gLogger.debug("#######################################"); + // set config file UserInfo.setConfigPath(getExternalFilesDir(null) + File.separator + "config"); - this.mMacAddr = getMacAddr(); - - ffmpeg = Ffmpeg.getInstance(); - //uvcCamera = new UVCCamera(); + this.mMacAddr = getMacAddr(); mBtnStart = findViewById(R.id.button); mTextServer = findViewById(R.id.textServer); mTextUser = findViewById(R.id.textUser); mTextCamera = findViewById(R.id.textCamera); - loadConfig(); - - // init service - intent.setPackage(this.getPackageName()); - intent.setAction("ai.suanzi.rtmpclient.service"); - - // init surface view mSufaceView = findViewById(R.id.surfaceView); mHolder = mSufaceView.getHolder(); mHolder.addCallback(this); - // camera - //mCamera = getCameraInstance(); - //configCamera(mCamera); + //intent.setPackage(this.getPackageName()); // init service + //intent.setAction("ai.suanzi.rtmpclient.service"); } - boolean mBounded; - MyService mServer; ServiceConnection mConnection = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { Toast.makeText(MainActivity.this, "Service is disconnected", 1000).show(); - gLogger.error("onServiceDisconnected"); - + gLogger.error("onServiceDisconnected ---------->"); mBounded = false; mServer = null; } @@ -137,11 +129,14 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal @Override public void onServiceConnected(ComponentName name, IBinder service) { Toast.makeText(MainActivity.this, "Service is connected", 1000).show(); - gLogger.error("onServiceConnected"); + gLogger.error("onServiceConnected ---------->"); mBounded = true; LocalBinder mLocalBinder = (LocalBinder)service; mServer = mLocalBinder.getServiceInstance(); - mServer.onChange(mHolder); + if(mServer.setRtmpUrl(UserInfo.getConfig().toUrl())){ + mServer.startPreview(mHolder); + } + } }; @@ -149,27 +144,23 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + init(); - //mCameraView = new CameraView(this); - //intent.putExtra("url", "xxxxxxxxxxxxxxxxxx"); - //intent.putExtra("view", mCameraView); + loadConfig(); //startService(intent); - Intent mIntent = new Intent(this, MyService.class); + mIntent = new Intent(this, MyService.class); bindService(mIntent, mConnection, BIND_AUTO_CREATE); - - - + mBtnStart.setText("start"); mBtnStart.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view){ - String url = mTextServer.getText().toString() + "/" + mTextUser.getText().toString() + "_" + mMacAddr + "_" + mTextCamera.getText().toString(); - gLogger.error("----------> onClick, Url is: " + url); - intent.putExtra("url", url); - startService(intent); + gLogger.error("----------> onClick"); saveConfig(); + unbindService(mConnection); + bindService(mIntent, mConnection, BIND_AUTO_CREATE); } }); } @@ -177,57 +168,37 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal @Override protected void onPause(){ super.onPause(); - gLogger.debug("OnPause"); + gLogger.error("OnPause --------->"); } @Override protected void onResume() { super.onResume(); - gLogger.debug("OnResume"); + gLogger.error("OnResume ---------> "); } @Override protected void onStop() { super.onStop(); - gLogger.debug("onStop"); + gLogger.debug("onStop --------->"); } @Override protected void onStart(){ super.onStart(); - gLogger.debug("onStart"); + gLogger.debug("onStart --------->"); } @Override protected void onDestroy(){ super.onDestroy(); - gLogger.debug("onDestroy"); + gLogger.debug("onDestroy --------->"); } @Override protected void onRestart(){ - super.onStart(); - gLogger.debug("onRestart"); - } - - - // class StreamTask AsyncTask - private class StreamTask extends AsyncTask{ - private byte[] data; - - StreamTask(byte[] data){ - this.data = data; - } - - @Override - protected Void doInBackground(Void... params) { - - if (this.data != null){ - Log.e(TAG, "fps: " + mCamera.getParameters().getPreviewFrameRate()); - ffmpeg.process(this.data); - } - return null; - } + super.onRestart(); + gLogger.debug("onRestart ---------->"); } @@ -243,82 +214,70 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal public void surfaceChanged(SurfaceHolder holder, int format, int widht, int height){ gLogger.error("surfaceChanged"); mHolder = holder; - if (mServer != null) { - mServer.onChange(holder); - } - - /* final SurfaceHolder hh = holder; - Thread tr = new Thread(new Runnable() { - @Override - public void run() { - try { - Thread.sleep(3000); - } catch (Exception e){ - e.printStackTrace(); - } - if (mServer != null) { - gLogger.error("onChange"); - mServer.onChange(hh); - }else { - gLogger.error("service XXXXXXXXXXXXXXX"); - } - - } - }); - tr.run();*/ - - - /* - try { - mCamera.setPreviewDisplay(holder); - mCamera.startPreview(); - } catch (Exception e){ - gLogger.error("Error starting camera previewe: " + e.getMessage()); - Toast.makeText(this, "Camera Error: " + e.getMessage(), Toast.LENGTH_LONG).show(); + mServer.startPreview(holder); } - */ } @Override - public void surfaceDestroyed(SurfaceHolder holder){ - Log.e(TAG, "surfaceDestroyed"); + public void surfaceDestroyed(SurfaceHolder holder){ gLogger.debug("surfaceDestroyed"); } @Override public void onPreviewFrame(final byte[] data, Camera camera){ gLogger.error("onPreviewFrame"); - /*if (null != mStreamTask){ - switch (mStreamTask.getStatus()){ - case RUNNING: - Log.e(TAG, "onPreviewFrame Running"); - return; - case PENDING: - Log.e(TAG,"OnPreviewFrame Pending"); - mStreamTask.cancel(false); - break; - } + + } + + + private String getMacAddr() { + WifiManager manager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); + WifiInfo info = manager.getConnectionInfo(); + return info.getMacAddress().replace(":", ""); //02:00:00:00:00:00 - 020000000000 + } + + private void loadConfig() { + UserInfo info = UserInfo.getConfig(); + gLogger.error("server is:" + info.server); + mTextServer.setText(info.server.equals("") ? "rtmp://gpussh.suanzi.ai:1935/myapp" : info.server); + mTextUser.setText(info.user); + mTextCamera.setText(info.cameraId); + //mMacAddr = info.macAddr.equals("") ? this.mMacAddr : info.macAddr; + gLogger.error("loadConfig - url is :" + info.toUrl()); + } + + private void saveConfig() { + UserInfo info = UserInfo.getConfig(); + info.update(mTextServer.getText().toString(), mTextUser.getText().toString(), mMacAddr, mTextCamera.getText().toString()); + if(info.saveConfig()) { + Toast.makeText(getApplicationContext(), "Config saved", Toast.LENGTH_LONG).show(); + } else { + Toast.makeText(getApplicationContext(), "Error: config saved", Toast.LENGTH_LONG).show(); } - mStreamTask = new StreamTask(data); - mStreamTask.execute((Void)null); -*/ + gLogger.error("saveConfig - url: " + info.toUrl()); + } + + private void changePermission(){ + try { + Log.e(TAG, "change permission"); + //Process sh = Runtime.getRuntime().exec(new String[]{"su", "-c", "chmod 666 /dev/video0"}); + + Process sh = Runtime.getRuntime().exec("/system/xbin/su", null,null); + //Process sh = Runtime.getRuntime().exec("su", null,null); + + OutputStream os = sh.getOutputStream(); + os.write(("/system/bin/chmod 666 /dev/video0").getBytes("ASCII")); + //os.write(("/system/bin/echo 'wowo' >> /data/local/test").getBytes("ASCII")); + os.flush(); + os.close(); + sh.waitFor(); -// ong endTime = System.currentTimeMillis(); -// mExecutor.execute(new Runnable() { -// @Override -// public void run() { -// //long encodeTime = System.currentTimeMillis(); -// ffmpeg.process(data); - //Log.e(TAG, "编码第:" + (encodeCount++) + "帧,耗时:" + (System.currentTimeMillis() - encodeTime)); -// } -// }); - //Log.e(TAG, "采集第:" + (++count) + "帧,距上一帧间隔时间:" -// + (endTime - previewTime) + " " + Thread.currentThread().getName()); -// previewTime = endTime;*/ + }catch (Exception e){ + e.printStackTrace(); + } } - // private private boolean checkCameraHardware(Context context) { return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA); } @@ -365,50 +324,54 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal this.startActivity(i); } - private String getMacAddr() { - WifiManager manager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); - WifiInfo info = manager.getConnectionInfo(); - return info.getMacAddress().replace(":", ""); //02:00:00:00:00:00 - 020000000000 - } - - private void loadConfig() { - UserInfo info = UserInfo.getConfig(); - mTextServer.setText(info.server.equals("") ? "rtmp://gpussh.suanzi.ai:1935/myapp" : info.server); - mTextUser.setText(info.user.equals("") ? "suanzi" : info.user ); - mTextCamera.setText(info.cameraId.equals("") ? "001" : info.cameraId); - mMacAddr = info.macAddr.equals("") ? this.mMacAddr : info.macAddr; - gLogger.debug("loadConfig " + info.toString()); - } +// +// // class StreamTask AsyncTask +// private class StreamTask extends AsyncTask{ +// private byte[] data; +// +// StreamTask(byte[] data){ +// this.data = data; +// } +// +// @Override +// protected Void doInBackground(Void... params) { +// +// if (this.data != null){ +// Log.e(TAG, "fps: " + mCamera.getParameters().getPreviewFrameRate()); +// ffmpeg.process(this.data); +// } +// return null; +// } +// } - private void saveConfig() { - UserInfo info = UserInfo.getConfig(); - info.update(mTextServer.getText().toString(), mTextUser.getText().toString(), mMacAddr, mTextCamera.getText().toString()); - if(info.saveConfig()) { - Toast.makeText(getApplicationContext(), "Config saved", Toast.LENGTH_LONG).show(); - } else { - Toast.makeText(getApplicationContext(), "Error: config saved", Toast.LENGTH_LONG).show(); + /*if (null != mStreamTask){ + switch (mStreamTask.getStatus()){ + case RUNNING: + Log.e(TAG, "onPreviewFrame Running"); + return; + case PENDING: + Log.e(TAG,"OnPreviewFrame Pending"); + mStreamTask.cancel(false); + break; + } } - gLogger.error("saveConfig: " + info.toString()); - } - - private void changePermission(){ - try { - Log.e(TAG, "change permission"); - //Process sh = Runtime.getRuntime().exec(new String[]{"su", "-c", "chmod 666 /dev/video0"}); + mStreamTask = new StreamTask(data); + mStreamTask.execute((Void)null); +*/ - Process sh = Runtime.getRuntime().exec("/system/xbin/su", null,null); - //Process sh = Runtime.getRuntime().exec("su", null,null); +// ong endTime = System.currentTimeMillis(); +// mExecutor.execute(new Runnable() { +// @Override +// public void run() { +// //long encodeTime = System.currentTimeMillis(); +// ffmpeg.process(data); + //Log.e(TAG, "编码第:" + (encodeCount++) + "帧,耗时:" + (System.currentTimeMillis() - encodeTime)); +// } +// }); + //Log.e(TAG, "采集第:" + (++count) + "帧,距上一帧间隔时间:" +// + (endTime - previewTime) + " " + Thread.currentThread().getName()); +// previewTime = endTime;*/ - OutputStream os = sh.getOutputStream(); - os.write(("/system/bin/chmod 666 /dev/video0").getBytes("ASCII")); - //os.write(("/system/bin/echo 'wowo' >> /data/local/test").getBytes("ASCII")); - os.flush(); - os.close(); - sh.waitFor(); - }catch (Exception e){ - e.printStackTrace(); - } - } }