X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fai%2Fsuanzi%2Frtmpclient%2FMainActivity.java;h=4080ee2525361d270e46cd3a2e48c7406cb44417;hb=b7202442677d0cf41e6e59870cd6c34e5619b8b9;hp=abef9c8fb756addc7893ade8f7786bebf794be1b;hpb=6d410bf5e67288660c675d0aa76891eb8367e7cc;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 abef9c8..4080ee2 100644 --- a/app/src/main/java/ai/suanzi/rtmpclient/MainActivity.java +++ b/app/src/main/java/ai/suanzi/rtmpclient/MainActivity.java @@ -1,7 +1,14 @@ package ai.suanzi.rtmpclient; +import android.app.Activity; +import android.app.PendingIntent; +import android.content.BroadcastReceiver; +import android.content.IntentFilter; import android.graphics.ImageFormat; import android.graphics.SurfaceTexture; +import android.hardware.usb.UsbDevice; +import android.hardware.usb.UsbManager; +import android.os.Environment; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; @@ -14,32 +21,75 @@ import android.widget.Toast; import android.content.Context; import android.content.pm.PackageManager; import android.os.AsyncTask; + +import java.io.File; +import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.io.IOException; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import android.content.Intent; +import java.io.OutputStream; +import android.hardware.usb.UsbManager; +import android.hardware.usb.UsbDeviceConnection; - +import de.mindpipe.android.logging.log4j.LogConfigurator; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback, Camera.PreviewCallback{ private static final String TAG = "PENG"; - private Ffmpeg ffmpeg = new Ffmpeg(); + private Ffmpeg ffmpeg;// = Ffmpeg.getInstance(); private Camera mCamera ;//= getCameraInstance(); private StreamTask mStreamTask; private SurfaceHolder mHolder; ExecutorService mExecutor = Executors.newSingleThreadExecutor(); + //Intent it = new Intent(getApplicationContext(), MyService.class); + Intent intent = new Intent(); + + private UsbManager usbManager; + private UsbDevice usbCamera; + + private Logger gLogger; + private void configLog(){ + try { + final LogConfigurator logConfigurator = new LogConfigurator(); + //logConfigurator.setFileName(Environment.getExternalStorageDirectory() + File.separator + "myc" + File.separator + "log" + File.separator + "test.log"); + String fname = getExternalFilesDir(null) + File.separator + "log.txt"; + logConfigurator.setFileName(fname); + Log.e(TAG, "Log file is located at: " + fname); + logConfigurator.setRootLevel(Level.DEBUG); + logConfigurator.setLevel("org.apache", Level.ERROR); + logConfigurator.setMaxFileSize(1024 * 1024 * 10); + logConfigurator.configure(); + gLogger = Logger.getLogger(getClass()); + } catch (Exception e){ + e.printStackTrace(); + } + } + + + + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - Log.e(TAG, "Ffmpeg Version: " + ffmpeg.getVersion()); + configLog(); + //Log.e(TAG, "Ffmpeg Version: " + ffmpeg.getVersion()); + + gLogger.debug("#######################################"); + ffmpeg = Ffmpeg.getInstance(); + + gLogger.debug(" this ia argument " + 3 + "fjeiofjei"); 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"); @@ -64,7 +114,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()); @@ -73,50 +123,126 @@ 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"); + + + final Button btn2 = findViewById(R.id.button); - /*try{ - mCamera.setPreviewTexture(st); - }catch (IOException e){ - e.printStackTrace(); - }*/ - final Button btn2 = findViewById(R.id.button2); btn2.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view){ Log.e(TAG, "onclick2"); - ffmpeg.play(mHolder.getSurface(),"/storage/sdcard0/output.flv"); - + //ffmpeg.play(mHolder.getSurface(),"/storage/sdcard0/output.flv"); + //ffmpeg.push(mHolder.getSurface()); + //ffmpeg.preview(mHolder.getSurface()); + // intent.putExtra("cmd",0);//0,开启前台服务,1,关闭前台服务 + // startService(intent); + ffmpeg.getVersion(); } }); - Log.e(TAG, "onclick2"); - //ffmpeg.play(mHolder.getSurface(),"/storage/emulated/0/Movies/output.flv"); - //ffmpeg.play(mHolder.getSurface(),"/data/local/tmp/big_buck_bunny_720p_10mb.mp4"); - - - btn2.post(new Runnable(){ + /*btn2.post(new Runnable(){ @Override public void run() { btn2.performClick(); + } }); + switchToBackground();*/ +/* + + usbManager = (UsbManager) getSystemService(Context.USB_SERVICE); + + HashMap deviceList = usbManager.getDeviceList(); + Log.e(TAG, "device list size : " + deviceList.size()); + Iterator deviceIterator = deviceList.values().iterator(); + PendingIntent mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0); + + IntentFilter filter = new IntentFilter(UsbManager.ACTION_USB_DEVICE_DETACHED); + registerReceiver(mUsbReceiver, filter); + filter = new IntentFilter(UsbManager.ACTION_USB_DEVICE_ATTACHED); + registerReceiver(mUsbReceiver, filter); + filter = new IntentFilter(ACTION_USB_PERMISSION); + registerReceiver(mUsbReceiver, filter); + + while(deviceIterator.hasNext()){ + UsbDevice device = deviceIterator.next(); + Log.e(TAG, device.toString()); + Log.e(TAG, device.getDeviceName() + " manufacture name: " + device.getManufacturerName() + " " + device.getSerialNumber() + " " + device.getDeviceId()); + + if (device.getVendorId() == 6257){ + usbManager.requestPermission(device, mPermissionIntent); + + usbCamera = device; + } + + //Log.e(TAG, device.) + //device.getInterface() + } + +*/ + + } //SurfaceTexture st = new SurfaceTexture(0); + private static final String ACTION_USB_PERMISSION = + "com.android.example.USB_PERMISSION"; + private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() { + + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (ACTION_USB_PERMISSION.equals(action)) { + synchronized (this) { + UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE); + + if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, true)) { + if(device != null){ + Log.e(TAG, "extra permission granted"); + //call method to set up device communication + + + new Thread(new Runnable() { + @Override + public void run() { + Log.e("device","MyThread3");//bhw + UsbDeviceConnection connection = usbManager.openDevice(usbCamera); + int fd = connection.getFileDescriptor();//获取文件描述符 + ffmpeg.test(fd); + Log.e("device","MyThread3 "+fd); + } + }).start(); + + } + } + else { + Log.e(TAG, "permission denied for device. " + device); + } + } + } else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)){ + UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE); + if (device != null){ + Log.e(TAG, "==== device out"); + } + } else if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) { + Log.e(TAG, "==== device in ====="); + } + } + }; + + + @Override protected void onPause(){ super.onPause(); Log.e(TAG, "OnPause"); - //ffmpeg.flush(); - //ffmpeg.close(); } @Override @@ -300,4 +426,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); + } + }