X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fai%2Fsuanzi%2Frtmpclient%2FMainActivity.java;h=320e2bb0e4ae96dabf28c1895abadf8c0ba3ce67;hb=9773f3da1389f4e52fecfc79686fe2c94b08d6bc;hp=708ed3c8923156923bcabde439a14939e0488333;hpb=8af8da070650175d3a35a840fbd339ee572d144f;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 708ed3c..320e2bb 100644 --- a/app/src/main/java/ai/suanzi/rtmpclient/MainActivity.java +++ b/app/src/main/java/ai/suanzi/rtmpclient/MainActivity.java @@ -47,6 +47,7 @@ import android.content.ComponentName; import ai.suanzi.rtmpclient.MyService.LocalBinder; import android.os.IBinder; +import android.net.ConnectivityManager; //"rtmp://gpussh.suanzi.ai:1935/myapp/suanzi_ac83f34ead90_cameraid"; @@ -75,6 +76,7 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal private String mMacAddr = ""; //private CameraView mCameraView; private String mRtmpUrl; + private NetworkMonitor networkMonitor; boolean mBounded; MyService mServer; @@ -110,8 +112,6 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal mSufaceView = findViewById(R.id.surfaceView); mHolder = mSufaceView.getHolder(); mHolder.addCallback(this); - - //intent.setPackage(this.getPackageName()); // init service //intent.setAction("ai.suanzi.rtmpclient.service"); } @@ -136,10 +136,24 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal if(mServer.setRtmpUrl(UserInfo.getConfig().toUrl())){ mServer.startPreview(mHolder); } - } }; + private void doBindService(){ + if(!mBounded) { + gLogger.debug("doBindService"); + bindService(mIntent, mConnection, BIND_AUTO_CREATE); + } + } + + private void doUnbindService() { + if(mBounded){ + gLogger.debug("doUnbindService"); + unbindService(mConnection); + mBounded = false; + } + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -150,8 +164,12 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal //startService(intent); mIntent = new Intent(this, MyService.class); - bindService(mIntent, mConnection, BIND_AUTO_CREATE); - + if(NetworkMonitor.isNetworkAvailable(this)){ + gLogger.error("Current network is available"); + doBindService(); + } else { + gLogger.error("Current network is NOT available"); + } mBtnStart.setText("start"); mBtnStart.setOnClickListener(new View.OnClickListener(){ @@ -159,10 +177,39 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal public void onClick(View view){ gLogger.error("----------> onClick"); saveConfig(); - unbindService(mConnection); - bindService(mIntent, mConnection, BIND_AUTO_CREATE); + doUnbindService(); + } }); + + if ( networkMonitor == null) { + networkMonitor = new NetworkMonitor(new NetworkMonitor.NetworkListener() { + @Override + public void onWifiConnected() { + gLogger.error("onWifiConnected"); + doBindService(); + } + + @Override + public void onWifiDisconnected() { + gLogger.error("onWifiDisconnected"); + doUnbindService(); + } + + @Override + public void onWifiEnabled() { + gLogger.error("onWifiEnabled"); + } + + @Override + public void onWifiDisabled() { + gLogger.error("onWifiDisabled"); + } + }); + } + IntentFilter filter = new IntentFilter(); + filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); + registerReceiver(networkMonitor, filter); } @Override @@ -192,6 +239,7 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal @Override protected void onDestroy(){ super.onDestroy(); + unregisterReceiver(networkMonitor); gLogger.debug("onDestroy --------->"); } @@ -201,9 +249,6 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal gLogger.debug("onRestart ---------->"); } - - - // SurfaceHolder.Callback implementation @Override public void surfaceCreated(final SurfaceHolder holder){ @@ -238,7 +283,8 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal private void loadConfig() { UserInfo info = UserInfo.getConfig(); - mTextServer.setText(info.server); + 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; @@ -322,55 +368,4 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal i.addCategory(Intent.CATEGORY_HOME); this.startActivity(i); } - -// -// // 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; -// } -// } - - /*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; - } - } - mStreamTask = new StreamTask(data); - mStreamTask.execute((Void)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;*/ - - - }