Compare commits

..

No commits in common. "kinetic" and "v1.0.2" have entirely different histories.

3 changed files with 80 additions and 140 deletions

View File

@ -96,7 +96,7 @@ public class CameraPreviewView {
private void setupCameraParameters() { private void setupCameraParameters() {
Camera.Parameters parameters = camera.getParameters(); Camera.Parameters parameters = camera.getParameters();
List<Size> supportedPreviewSizes = parameters.getSupportedPreviewSizes(); List<Size> supportedPreviewSizes = parameters.getSupportedPreviewSizes();
previewSize = getOptimalPreviewSize(supportedPreviewSizes, 640, 480); previewSize = getOptimalPreviewSize(supportedPreviewSizes, 1920, 1080);
parameters.setPreviewSize(previewSize.width, previewSize.height); parameters.setPreviewSize(previewSize.width, previewSize.height);
parameters.setPreviewFormat(ImageFormat.NV21); parameters.setPreviewFormat(ImageFormat.NV21);
camera.setParameters(parameters); camera.setParameters(parameters);

View File

@ -50,7 +50,7 @@ public class MainActivity extends RosActivity {
requestWindowFeature(Window.FEATURE_NO_TITLE); requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main); setContentView(R.layout.main);
//rosCameraPreviewView = (RosCameraPreviewView) findViewById(R.id.ros_camera_preview_view); rosCameraPreviewView = (RosCameraPreviewView) findViewById(R.id.ros_camera_preview_view);
} }
@Override @Override

View File

@ -27,12 +27,8 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityCompat;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View;
import android.view.Window; import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.Switch;
import android.widget.Toast; import android.widget.Toast;
import android.util.Log; import android.util.Log;
@ -58,18 +54,27 @@ public class MainActivity extends RosActivity {
private NavSatFixPublisher fix_pub; private NavSatFixPublisher fix_pub;
private ImuPublisher imu_pub; private ImuPublisher imu_pub;
private Switch cameraSwitch;
private Switch imuSwitch;
private Switch gpsSwitch;
private boolean cameraRunning;
private NodeMainExecutor nodeMainExecutor; private NodeMainExecutor nodeMainExecutor;
private LocationManager mLocationManager; private LocationManager mLocationManager;
private SensorManager mSensorManager; private SensorManager mSensorManager;
private static String sID = "";
private NodeConfiguration nodeConfigurationGPS, nodeConfigurationCamera, nodeConfigurationImu; private static String sID = "1234";
private void id(Activity act) {
SharedPreferences sharedPref = act.getPreferences(Context.MODE_PRIVATE);
sID = sharedPref.getString(getString(R.string.sID_key), "1234");
Log.e("E", MasterChooser.getResetNodePrefixButtonClicked()+ "");
if (sID.equals("1234") || MasterChooser.getResetNodePrefixButtonClicked()) {
sID = Integer.toString(new Random().nextInt(Integer.MAX_VALUE/2) + Integer.MAX_VALUE / 2);
sID = sID.replace("-","");
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString(getString(R.string.sID_key), sID);
editor.commit();
}
}
public MainActivity() { public MainActivity() {
super("ROS", "Camera & Imu"); super("ROS", "Camera & Imu");
@ -79,68 +84,17 @@ public class MainActivity extends RosActivity {
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); requestWindowFeature(Window.FEATURE_NO_TITLE);
cameraRunning = false; getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
cameraSwitch = (Switch) findViewById(R.id.camera_switch); //setContentView(R.layout.activity_main);
imuSwitch = (Switch) findViewById(R.id.imu_switch); }
gpsSwitch = (Switch) findViewById(R.id.gps_switch);
imuSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { public boolean onTouchEvent(MotionEvent event) {
//if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
if(isChecked) if (event.getAction() == MotionEvent.ACTION_UP) {
nodeMainExecutor.execute(imu_pub, nodeConfigurationImu);
else
nodeMainExecutor.shutdownNodeMain(imu_pub);
Log.v("IMU publisher", ""+isChecked);
}
});
gpsSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked)
nodeMainExecutor.execute(fix_pub, nodeConfigurationGPS);
else
nodeMainExecutor.shutdownNodeMain(fix_pub);
Log.v("IMU publisher", ""+isChecked);
}
});
cameraSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked) {
rosCameraPreviewView.setCamera(getCamera());
nodeMainExecutor.execute(rosCameraPreviewView, nodeConfigurationCamera);
cameraRunning = true;
}
else {
nodeMainExecutor.shutdownNodeMain(rosCameraPreviewView);
cameraRunning = false;
}
Log.v("IMU publisher", ""+isChecked);
}
});
}
public void onSwitchCameraButtonClicked(View view) {
final Toast toast;
if(!cameraRunning)
{
toast = Toast.makeText(this, "Camera Publisher not running", Toast.LENGTH_SHORT);
}
else {
int numberOfCameras = Camera.getNumberOfCameras(); int numberOfCameras = Camera.getNumberOfCameras();
final Toast toast;
if (numberOfCameras > 1) { if (numberOfCameras > 1) {
cameraId = (cameraId + 1) % numberOfCameras; cameraId = (cameraId + 1) % numberOfCameras;
rosCameraPreviewView.releaseCamera(); rosCameraPreviewView.releaseCamera();
@ -149,7 +103,6 @@ public class MainActivity extends RosActivity {
} else { } else {
toast = Toast.makeText(this, "No alternative cameras to switch to.", Toast.LENGTH_SHORT); toast = Toast.makeText(this, "No alternative cameras to switch to.", Toast.LENGTH_SHORT);
} }
}
runOnUiThread(new Runnable() { runOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -157,10 +110,13 @@ public class MainActivity extends RosActivity {
} }
}); });
} }
//}
return true;
}
@Override @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) //API = 15 @Override @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) //API = 15
protected void init(NodeMainExecutor nodeMainExecutor) { protected void init(NodeMainExecutor nodeMainExecutor) {
sID = MasterChooser.sID; id(this);
rosCameraPreviewView = new RosCameraPreviewView(sID); rosCameraPreviewView = new RosCameraPreviewView(sID);
mLocationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); mLocationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
mSensorManager = (SensorManager) this.getSystemService(SENSOR_SERVICE); mSensorManager = (SensorManager) this.getSystemService(SENSOR_SERVICE);
@ -175,32 +131,40 @@ public class MainActivity extends RosActivity {
PERMISSIONS[3] = Manifest.permission.WRITE_EXTERNAL_STORAGE; PERMISSIONS[3] = Manifest.permission.WRITE_EXTERNAL_STORAGE;
ActivityCompat.requestPermissions(this, PERMISSIONS, 0); ActivityCompat.requestPermissions(this, PERMISSIONS, 0);
}else { }else {
initGPS(); NodeConfiguration nodeConfiguration1 = NodeConfiguration.newPublic(InetAddressFactory.newNonLoopback().getHostAddress());
initCamera(); nodeConfiguration1.setMasterUri(getMasterUri());
} nodeConfiguration1.setNodeName("android_" + sID + "_nav_sat_fix");
initImu();
}
private void initGPS() {
this.fix_pub = new NavSatFixPublisher(mLocationManager, sID); this.fix_pub = new NavSatFixPublisher(mLocationManager, sID);
nodeConfigurationGPS = NodeConfiguration.newPublic(InetAddressFactory.newNonLoopback().getHostAddress()); nodeMainExecutor.execute(this.fix_pub, nodeConfiguration1);
nodeConfigurationGPS.setMasterUri(getMasterUri());
nodeConfigurationGPS.setNodeName(fix_pub.getDefaultNodeName());
}
private void initCamera() {
rosCameraPreviewView.setCamera(getCamera()); rosCameraPreviewView.setCamera(getCamera());
nodeConfigurationCamera = NodeConfiguration.newPublic(InetAddressFactory.newNonLoopback().getHostAddress()); NodeConfiguration nodeConfiguration2 = NodeConfiguration.newPublic(InetAddressFactory.newNonLoopback().getHostAddress());
nodeConfigurationCamera.setMasterUri(getMasterUri()); nodeConfiguration2.setMasterUri(getMasterUri());
nodeConfigurationCamera.setNodeName(rosCameraPreviewView.getDefaultNodeName()); nodeConfiguration2.setNodeName("android_" + sID + "_camera");
nodeMainExecutor.execute(this.rosCameraPreviewView, nodeConfiguration2);
} }
private void initImu() { NodeConfiguration nodeConfiguration3 = NodeConfiguration.newPublic(InetAddressFactory.newNonLoopback().getHostAddress());
nodeConfigurationImu = NodeConfiguration.newPublic(InetAddressFactory.newNonLoopback().getHostAddress()); nodeConfiguration3.setMasterUri(getMasterUri());
nodeConfigurationImu.setMasterUri(getMasterUri()); nodeConfiguration3.setNodeName("android_" + sID + "_imu");
this.imu_pub = new ImuPublisher(mSensorManager, sID); this.imu_pub = new ImuPublisher(mSensorManager, sID);
nodeConfigurationImu.setNodeName(imu_pub.getDefaultNodeName()); nodeMainExecutor.execute(this.imu_pub, nodeConfiguration3);
}
private void executeGPS() {
NodeConfiguration nodeConfiguration1 = NodeConfiguration.newPublic(InetAddressFactory.newNonLoopback().getHostAddress());
nodeConfiguration1.setMasterUri(getMasterUri());
nodeConfiguration1.setNodeName("android_" + sID + "_nav_sat_fix");
this.fix_pub = new NavSatFixPublisher(mLocationManager, sID);
nodeMainExecutor.execute(this.fix_pub, nodeConfiguration1);
}
private void executeCamera() {
rosCameraPreviewView.setCamera(getCamera());
NodeConfiguration nodeConfiguration2 = NodeConfiguration.newPublic(InetAddressFactory.newNonLoopback().getHostAddress());
nodeConfiguration2.setMasterUri(getMasterUri());
nodeConfiguration2.setNodeName("android_" + sID + "_camera");
nodeMainExecutor.execute(this.rosCameraPreviewView, nodeConfiguration2);
} }
private Camera getCamera() { private Camera getCamera() {
@ -208,10 +172,10 @@ public class MainActivity extends RosActivity {
Camera.Parameters camParams = cam.getParameters(); Camera.Parameters camParams = cam.getParameters();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
if (camParams.getSupportedFocusModes().contains( if (camParams.getSupportedFocusModes().contains(
Camera.Parameters.FOCUS_MODE_INFINITY)) { Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) {
camParams.setFocusMode(Camera.Parameters.FOCUS_MODE_INFINITY); camParams.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
} else { } else {
camParams.setFocusMode(Camera.Parameters.FOCUS_MODE_INFINITY); camParams.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
} }
} }
//cam.setParameters(camParams); //cam.setParameters(camParams);
@ -224,41 +188,17 @@ public class MainActivity extends RosActivity {
if (requestCode == 0) { if (requestCode == 0) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the // permission was granted, yay! Do the
initGPS(); executeGPS();
} }
if (grantResults.length > 1 && grantResults[1] == PackageManager.PERMISSION_GRANTED) { if (grantResults.length > 1 && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the // permission was granted, yay! Do the
initCamera(); executeCamera();
}
if (grantResults.length > 2 && grantResults[2] == PackageManager.PERMISSION_GRANTED &&
grantResults[3] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the
} }
} }
} }
public void onRadioButtonClicked(View view) {
boolean checked = ((RadioButton) view).isChecked();
switch(view.getId()) {
case R.id.res480:
if (checked)
rosCameraPreviewView.setPreviewSize(640, 480);
break;
case R.id.res720:
if (checked)
rosCameraPreviewView.setPreviewSize(1280, 720);
break;
case R.id.res1080:
if (checked)
rosCameraPreviewView.setPreviewSize(1920, 1080);
break;
}
if(cameraRunning){
rosCameraPreviewView.releaseCamera();
rosCameraPreviewView.setCamera(getCamera());
}
}
} }