X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fai%2Fsuanzi%2Frtmpclient%2FMainActivity.java;h=6531b9f4ad090e909e1a0f593c43e86478d9384c;hb=f8fb13b9804d9b4b6fb227fbd07b80de9b092b55;hp=5c2e2f9e3d6aa43d684a4371ccbd66b78ec72c7f;hpb=831cc09829bc6e18d8d0d8bb78063e89ea565ce9;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 5c2e2f9..6531b9f 100644 --- a/app/src/main/java/ai/suanzi/rtmpclient/MainActivity.java +++ b/app/src/main/java/ai/suanzi/rtmpclient/MainActivity.java @@ -42,6 +42,11 @@ import org.apache.log4j.Level; import org.apache.log4j.Logger; import android.net.wifi.WifiManager; import android.net.wifi.WifiInfo; +import android.content.ServiceConnection; +import android.content.ComponentName; + +import ai.suanzi.rtmpclient.MyService.LocalBinder; +import android.os.IBinder; //"rtmp://gpussh.suanzi.ai:1935/myapp/suanzi_ac83f34ead90_cameraid"; @@ -53,7 +58,7 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal private StreamTask mStreamTask; private SurfaceHolder mHolder; private SurfaceView mSufaceView; - private UVCCamera uvcCamera; + //private UVCCamera uvcCamera; ExecutorService mExecutor = Executors.newSingleThreadExecutor(); //Intent it = new Intent(getApplicationContext(), MyService.class); Intent intent = new Intent(); @@ -68,6 +73,7 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal private TextInputEditText mTextUser; private TextInputEditText mTextCamera; private String mMacAddr = ""; + private CameraView mCameraView; private void configLog(){ try { @@ -92,7 +98,7 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal this.mMacAddr = getMacAddr(); ffmpeg = Ffmpeg.getInstance(); - uvcCamera = new UVCCamera(); + //uvcCamera = new UVCCamera(); mBtnStart = findViewById(R.id.button); mTextServer = findViewById(R.id.textServer); @@ -110,16 +116,51 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal mHolder.addCallback(this); // camera - mCamera = getCameraInstance(); - configCamera(mCamera); + //mCamera = getCameraInstance(); + //configCamera(mCamera); + } + 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"); + + mBounded = false; + mServer = null; + } + + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + Toast.makeText(MainActivity.this, "Service is connected", 1000).show(); + gLogger.error("onServiceConnected"); + mBounded = true; + LocalBinder mLocalBinder = (LocalBinder)service; + mServer = mLocalBinder.getServiceInstance(); + mServer.onChange(mHolder); + } + }; + @Override 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); + + //startService(intent); + Intent mIntent = new Intent(this, MyService.class); + bindService(mIntent, mConnection, BIND_AUTO_CREATE); + + + + mBtnStart.setOnClickListener(new View.OnClickListener(){ @Override @@ -129,149 +170,10 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal intent.putExtra("url", url); startService(intent); saveConfig(); - //changePermission(); - } - }); - - /*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); - Log.e(TAG,"XXXXXXXXXXXXXXXXXXXXXXXXXXX"); - Log.e(TAG, device.getVendorId() + "\n" + device.getProductId() + "\n" + device.getProductName() + "\n" + - device.getManufacturerName() + "\n" + device.getDeviceId() + "\n" + device.getSerialNumber() + "\n" + - device.getDeviceName()); - - final String name = device.getDeviceName(); - final String[] v = name.split("/"); - int busnum = 0; - int devnum = 0; - if (v != null) { - busnum = Integer.parseInt(v[v.length-2]); - devnum = Integer.parseInt(v[v.length-1]); - } - //mBusNum = busnum; - //mDevNum = devnum; - uData.vid = device.getVendorId(); - uData.pid = device.getProductId(); - uData.busNum = busnum; - uData.devNum = devnum; - - String result = null; - final String[] vv = name.split("/"); - if ((vv != null) && (vv.length > 2)) { - final StringBuilder sb = new StringBuilder(vv[0]); - for (int i = 1; i < vv.length - 2; i++) - sb.append("/").append(vv[i]); - result = sb.toString(); - } - uData.usbFsName = result; - - - uData.print(); - - usbCamera = device; - } - - //Log.e(TAG, device.) - //device.getInterface() - }*/ } - /*private UsbData uData = new UsbData(); - - private class UsbData { - public int vid; - public int pid; - public int fd; - public int busNum; - public int devNum; - public String usbFsName; - public void print(){ - Log.e(TAG, "vid=" + vid + ". pid=" + pid + ". fd=" + fd + ". busnum=" + busNum + ". devNum=" + devNum + ". usbFsName=" + usbFsName); - } - }*/ - - //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();//获取文件描述符 - uData.fd = fd; - //ffmpeg.test(fd); - int ret = uvcCamera.open(uData.vid, uData.pid, uData.fd, uData.busNum, uData.devNum, uData.usbFsName); - Log.e(TAG, "uvcCamera open return code:" + ret); - - 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(); @@ -340,6 +242,34 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal @Override 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(); @@ -347,6 +277,7 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal gLogger.error("Error starting camera previewe: " + e.getMessage()); Toast.makeText(this, "Camera Error: " + e.getMessage(), Toast.LENGTH_LONG).show(); } + */ } @Override @@ -357,7 +288,7 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal @Override public void onPreviewFrame(final byte[] data, Camera camera){ gLogger.error("onPreviewFrame"); - if (null != mStreamTask){ + /*if (null != mStreamTask){ switch (mStreamTask.getStatus()){ case RUNNING: Log.e(TAG, "onPreviewFrame Running"); @@ -370,7 +301,7 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal } mStreamTask = new StreamTask(data); mStreamTask.execute((Void)null); - +*/ // ong endTime = System.currentTimeMillis(); // mExecutor.execute(new Runnable() { @@ -424,7 +355,7 @@ public class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal } catch (IOException e){ e.printStackTrace(); } - camera.setPreviewCallback(this); + //camera.setPreviewCallback(this); } private void switchToBackground(){