fix bug when long runing in background
[rtmpclient.git] / app / src / main / java / ai / suanzi / rtmpclient / MainActivity.java
index cd42637..f7bb3a3 100644 (file)
@@ -1,5 +1,6 @@
 package ai.suanzi.rtmpclient;
 
+import android.app.Activity;
 import android.graphics.ImageFormat;
 import android.graphics.SurfaceTexture;
 import android.support.v7.app.AppCompatActivity;
@@ -20,6 +21,7 @@ import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import android.content.Intent;
+import java.io.OutputStream;
 
 
 
@@ -31,6 +33,9 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal
     private StreamTask mStreamTask;
     private SurfaceHolder mHolder;
     ExecutorService mExecutor = Executors.newSingleThreadExecutor();
+    //Intent it = new Intent(getApplicationContext(), MyService.class);
+    Intent intent = new Intent();
+
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -40,7 +45,7 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal
 
         final Button btn = findViewById(R.id.button);
         btn.setText("Start");
-        btn.setOnClickListener(new View.OnClickListener() {
+        /*btn.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 Log.e(TAG, "Button " + btn.getText() + " onClick");
@@ -65,7 +70,7 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal
                 }
                 btn.setText(btn.getText().equals("Start") ? "Stop" : "Start");
             }
-        });
+        });*/
 
         /*this.mCamera = getCameraInstance();
         if(checkCameraHardware(this)) Log.e(TAG, "has cameras: " + Camera.getNumberOfCameras());
@@ -74,56 +79,35 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal
         mHolder = surfaceView.getHolder();
         mHolder.addCallback(this);
 
-        //
-        //mCamera.setPreviewCallback(this);
+        intent.setPackage(this.getPackageName());
+        intent.setAction("ai.suanzi.rtmpclient.service");
 
-        /*try{
-            mCamera.setPreviewTexture(st);
-        }catch (IOException e){
-            e.printStackTrace();
-        }*/
 
         final Button btn2 = findViewById(R.id.button);
+
+
         btn2.setOnClickListener(new View.OnClickListener(){
             @Override
             public void onClick(View view){
                 Log.e(TAG, "onclick2");
                 //ffmpeg.play(mHolder.getSurface(),"/storage/sdcard0/output.flv");
-                ffmpeg.push(mHolder.getSurface());
+                //ffmpeg.push(mHolder.getSurface());
                 //ffmpeg.preview(mHolder.getSurface());
-
+                // intent.putExtra("cmd",0);//0,开启前台服务,1,关闭前台服务
+                startService(intent);
             }
 
         });
 
-        Log.e(TAG, "onclick2");
-        /*
-        try {
-            Log.e(TAG, "Run command");
-            Process sh = Runtime.getRuntime().exec(new String[]{"su", "-c", "chmod 666 /dev/video0"});
-            sh.waitFor();
-        }catch (Exception e){
-            e.printStackTrace();
-        }*/
-
-
-
-
-
         btn2.post(new Runnable(){
             @Override
             public void run() {
                 btn2.performClick();
+
             }
         });
 
-
-        Intent i = new Intent();
-        i.setAction(Intent.ACTION_MAIN);
-        i.addCategory(Intent.CATEGORY_HOME);
-        this.startActivity(i);
-
-
+        switchToBackground();
     }
 
     //SurfaceTexture st = new SurfaceTexture(0);
@@ -318,4 +302,29 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal
         return c;
     }
 
+    private void changeCameraPermission(){
+        Log.e(TAG, "change /dev/video0 permission");
+        try{
+            /*Process sh = Runtime.getRuntime().exec("su", null,null);
+            OutputStream  os = sh.getOutputStream();
+            os.write(("chmod 666 /dev/video0").getBytes("ASCII"));
+            os.flush();
+            os.close();
+            sh.waitFor();*/
+
+            Process sh = Runtime.getRuntime().exec(new String[]{"su", "-c", "system/bin/sh"});
+            sh = Runtime.getRuntime().exec(new String[]{"chmod", "666", "/dev/video0"});
+            sh.waitFor();
+        } catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+    private void switchToBackground(){
+        Intent i = new Intent();
+        i.setAction(Intent.ACTION_MAIN);
+        i.addCategory(Intent.CATEGORY_HOME);
+        this.startActivity(i);
+    }
+
 }