ETER){
gravity[0] = sensorEvent.values[0];
gravity[1] = sensorEvent.values[1];
gravity[2] = sensorEvent.values[2];
xAxis = sensorEvent.values[0];
yAxis = sensorEvent.values[1];
zAxis = sensorEvent.values[2];
xAxisValue.setText(String.valueOf(xAxis));
yAxisValue.setText(String.valueOf(yAxis));
zAxisValue.setText(String.valueOf(zAxis));
}
if(sensorEvent.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD){
Geom_mag[0] = sensorEvent.values[0];
Geom_mag[1] = sensorEvent.values[1];
Geom_mag[2] = sensorEvent.values[2];
}
SensorManager.getRotationMatrix(rotation_mat, inclinaison, gravity, Geom_mag);
YPR = mSensorManager.getOrientation(rotation_mat, YPR);
double r = Math.toDegrees(YPR[2]);
r = Math.abs(r);
headingAngle = YPR[0];
pitchAngle = YPR[1];
rollAngle = YPR[2];
headingValue.setText(String.valueOf(headingAngle));
pitchValue.setText(String.valueOf(pitchAngle));
rollValue.setText(String.valueOf(rollAngle));
if (r<45)
{
// launchCameraView();
launchFlatBack();
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
locationInUse = location;
latitude = location.getLatitude();
longitude = location.getLongitude();
altitude = location.getAltitude();
Log.d(TAG, "Latitude: " + String.valueOf(latitude));
Log.d(TAG, "Longitude: " + String.valueOf(longitude));
Log.d(TAG, "Altitude: " + String.valueOf(altitude));
latitudeValue.setText(String.valueOf(latitude));
longitudeValue.setText(String.valueOf(longitude));
altitudeValue.setText(String.valueOf(altitude));
lat = prefs.getFloat("SetLatitude", 0.0f);
lon = prefs.getFloat("SetLongitude", 0.0f);
setLoc.setLatitude(lat);
setLoc.setLongitude(lon);
if(locationInUse != null)
{
bearing = locationInUse.bearingTo(setLoc);
distance = locationInUse.distanceTo(setLoc);
bearingValue.setText(String.valueOf(bearing));
distanceValue.setText(String.valueOf(distance));
}
}
public void onProviderDisabled(String arg0) {
}
public void onProviderEnabled(String arg0) {
}
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
}
};
public void launchFlatBack() {
Intent flatBackIntent = new Intent(this, MainActivity.class);
startActivity(flatBackIntent);
}
@Override
public void onResume() {
super.onResume();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 2, locationListener);
mSensorManager.registerListener(this, Acc, SensorManager.SENSOR_DELAY_NORMAL);
mSensorManager.registerListener(this, Geom, SensorManager.SENSOR_DELAY_NORMAL);
lat = prefs.getFloat("SetLatitude", 0.0f);
lon = prefs.getFloat("SetLongitude", 0.0f);
setLoc.setLatitude(lat);
setLoc.setLongitude(lon);
if(locationInUse != null)
{
bearing = locationInUse.bearingTo(setLoc);
distance = locationInUse.distanceTo(setLoc);
bearingValue.setText(String.valueOf(bearing));
distanceValue.setText(String.valueOf(distance));
}
else
{
bearingValue.setText("Unable to get your location reliably.");
distanceValue.setText("Unable to get your location reliably.");
}
}
@Override
public void onPause() {
if (inPreview) {
camera.stopPreview();
}
locationManager.removeUpdates(locationListener);
mSensorManager.unregisterListener(this);
if (camera != null)
{
camera.release();
camera=null;
}
inPreview=false;
super.onPause();
}
@Override
public void onDestroy() {
camera.release();
camera=null;
}
private Camera.Size getBestPreviewSize(int width, int height, Camera.Parameters parameters) {
Camera.Size result=null;
for (Camera.Size size : parameters.getSupportedPreviewSizes()) {
if (size.width<=width && size.height<=height) {
if (result==null) {
result=size;
}
else {
int resultArea=result.width*result.height;
int newArea=size.width*size.height;
if (newArea>resultArea) {
result=size;
}
}
}
}
return(result);
}
SurfaceHolder.Callback surfaceCallback=new SurfaceHolder.Callback() {
public void surfaceCreated(SurfaceHolder holder) {
if (camera == null) {
camera = Camera.open();
}
try {
camera.setPreviewDisplay(previewHolder);
}
catch (Throwable t) {
Log.e(TAG, "Exception in setPreviewDisplay()", t);
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
if (camera != null) {
camera.stopPreview();
camera.setPreviewCallback(null);
camera.release();
camera = null;
}
}
};
}
위 코드는 휴대폰이 새워져있을때는 카메라뷰
휴대폰이 눞혀져 있을때는 지도가 뜨는 클레스중 카메라뷰에 관한 내용입니다.
눞혀져있을때 지도는 정상적으로 동작하나 세우게 되면 카메라 프리뷰가 안뜨고 카메라 화면이 뜨는 그 순간 멈춘 상태로 같이 뜨는 텍스트값만 바뀌던지 아니면 카메라가 까만 화면에서 멈춰 버립니다... 도와주시면 정말 감사하겠습니다.
전체적인 소스를 봐야하시면 따로 보내 드리겠습니다.
부탁드리겠습니다 ㅠ