마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

지도랑 카메라 스위칭을 하는데 카메라가 동작을 안합니다... 도와주세요 ㅠ

0 추천
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;
            }
        }

    };
}

위 코드는 휴대폰이 새워져있을때는 카메라뷰

휴대폰이 눞혀져 있을때는 지도가 뜨는 클레스중 카메라뷰에 관한 내용입니다.

눞혀져있을때 지도는 정상적으로 동작하나 세우게 되면 카메라 프리뷰가 안뜨고 카메라 화면이 뜨는 그 순간 멈춘 상태로 같이 뜨는 텍스트값만 바뀌던지 아니면 카메라가 까만 화면에서 멈춰 버립니다... 도와주시면 정말 감사하겠습니다.

 

전체적인 소스를 봐야하시면 따로 보내 드리겠습니다.

부탁드리겠습니다 ㅠ

Gyun91 (120 포인트) 님이 2015년 5월 13일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...