import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;
import android.os.Environment;
+import android.support.design.widget.TextInputEditText;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import de.mindpipe.android.logging.log4j.LogConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
+import android.net.wifi.WifiManager;
+import android.net.wifi.WifiInfo;
public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback, Camera.PreviewCallback{
private Camera mCamera ;//= getCameraInstance();
private StreamTask mStreamTask;
private SurfaceHolder mHolder;
+ private UVCCamera uvcCamera;
ExecutorService mExecutor = Executors.newSingleThreadExecutor();
//Intent it = new Intent(getApplicationContext(), MyService.class);
Intent intent = new Intent();
private UsbDevice usbCamera;
private Logger gLogger;
+
+ private Button mBtnStart;
+ private TextInputEditText mTextServer;
+ private TextInputEditText mTextUser;
+ private TextInputEditText mTextCamera;
+ private String mMacAddr = "";
+
private void configLog(){
try {
final LogConfigurator logConfigurator = new LogConfigurator();
-
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
configLog();
- //Log.e(TAG, "Ffmpeg Version: " + ffmpeg.getVersion());
-
+ UserInfo.setConfigPath(getExternalFilesDir(null) + File.separator + "config");
+ this.mMacAddr = getMacAddr();
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() {
- @Override
- public void onClick(View v) {
- Log.e(TAG, "Button " + btn.getText() + " onClick");
- if (mCamera == null) return;
- if(btn.getText().equals("Start")){
- mCamera.startPreview();
- Camera.Parameters params = mCamera.getParameters();
- //params.setPreviewFpsRange(30000, 30000);
- //params.setPictureSize(320, 240);
- //params.setPictureFormat(ImageFormat.NV21);
- //mCamera.setParameters(params);
-
+ uvcCamera = new UVCCamera();
+ mBtnStart = findViewById(R.id.button);
+ mTextServer = findViewById(R.id.textServer);
+ mTextUser = findViewById(R.id.textUser);
+ mTextCamera = findViewById(R.id.textCamera);
+ loadConfig();
- ffmpeg.init(params.getPictureSize().width, params.getPictureSize().height);
- } else {
- mCamera.setPreviewCallback(null);
- Toast.makeText(MainActivity.this, "encode done", Toast.LENGTH_SHORT).show();
- ffmpeg.flush();
- ffmpeg.close();
- }
- btn.setText(btn.getText().equals("Start") ? "Stop" : "Start");
- }
- });*/
- /*this.mCamera = getCameraInstance();
- if(checkCameraHardware(this)) Log.e(TAG, "has cameras: " + Camera.getNumberOfCameras());
-*/
final SurfaceView surfaceView = findViewById(R.id.surfaceView);
mHolder = surfaceView.getHolder();
mHolder.addCallback(this);
intent.setAction("ai.suanzi.rtmpclient.service");
- final Button btn2 = findViewById(R.id.button);
-
- btn2.setOnClickListener(new View.OnClickListener(){
+ final String macAddr = getMacAddr();
+ final Context context = getApplicationContext();
+ mBtnStart.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.preview(mHolder.getSurface());
- // intent.putExtra("cmd",0);//0,开启前台服务,1,关闭前台服务
- // startService(intent);
- ffmpeg.getVersion();
+ String url = mTextServer.getText().toString() + "/" + mTextUser.getText().toString() + "_" + macAddr + "_" + mTextCamera.getText().toString();
+ gLogger.error("Url " + url);
+ intent.putExtra("url", url);
+ startService(intent);
+ saveConfig();
}
-
});
/*btn2.post(new Runnable(){
});
switchToBackground();*/
-/*
+
usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
//device.getInterface()
}
-*/
+
Log.e("device","MyThread3");//bhw
UsbDeviceConnection connection = usbManager.openDevice(usbCamera);
int fd = connection.getFileDescriptor();//获取文件描述符
- ffmpeg.test(fd);
+ //ffmpeg.test(fd);
+ int ret = uvcCamera.open();
+ Log.e(TAG, "uvcCamera open return code:" + ret);
+
Log.e("device","MyThread3 "+fd);
}
}).start();
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);
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);
+ mTextUser.setText(info.user);
+ mTextCamera.setText(info.cameraId);
+ mMacAddr = info.macAddr;
+ gLogger.error("loadConfig " + info.toString());
+ }
+
+ private void saveConfig() {
+ UserInfo info = UserInfo.getConfig();
+ info.update(mTextServer.getText().toString(), mTextUser.getText().toString(), mMacAddr, mTextCamera.getText().toString());
+ if(info.saveConfig()) {
+ gLogger.error("saveConfig: " + info.toString());
+ Toast.makeText(getApplicationContext(), "Wring config succeed ", Toast.LENGTH_LONG).show();
+ }
+ }
}