기존의 개발자가 만든 NFC를 이용한 카메라 어플이 있습니다. 외주로 맡긴건데요

사진을 찍고 NFC 태그를 가져다대면 그 사진이 전송이 되는 로직을 타는 그런 앱입니다.

소스를 받긴 받았는데 문제가 최소버젼이 2.3.4 진저브레드에요.

일부러 타켓은 설정안하구요. 근데 아이스크림까지는 잘 돌아가는데 

젤리빈 얹은 기기에서는 어플은 구동이 되는데 사진을 찍고나면 NFC태그를 대주세요라고

떠야하는데 사진찍은 바로 후에 예상치 못한 오류를 내면서 어플이 꺼집니다.

뭐가 문제일까요? 혹시 NFC 모듈이 아이스크림과 젤리빈이 서로 다른걸까요?

원인이 있다면 무엇이 있겠는지요? 제가 안드로이드는 정말 초짜라서요.

 

혹시 몰라서 안드로이드 프로젝트를 Google APIs [Android 4.2]  써서  새로 만들어서

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />

이렇게 설정해주고 기존 소스코드 옮겨서 다시 컴파일해봤는데 역시 진저랑 아이스크림까지는 잘 돌아가는데

API가 4.2에 타켓 17인데도 불구하고 젤리빈에서는 사진찍은 후에 예상치못한 어쩌구 저쩌구 하면서 뻗네요.

카메라는 정상구동되고 찍는것까지도 되는것으로 보아 그 다음 로직이 문제인거 같은데

전문가분의 조언을 좀 듣고 싶습니다.

혹시 NFC쪽 문제일까요? NFC도 이게 쓰는 모듈 같은 것을 최신으로 바꿔줘야하는건가요?

그리고 Google APIs 4.2로 프로젝트 새로 만들어서 하니깐

기존의 메소드 들이 아래와 같이 Deprecated 된 것들이 꽤 되던데

혹시 이것 때문에 정상적으로 어플 구동이 안되는걸 수도 있는지요?

 

  @Override
  public void onFinish() {
   // TODO Auto-generated method stub
   dismissDialog(DLG_REG_DEVICE);

   if (!result) {
    Toast.makeText(MainApp.this, resultMsg, Toast.LENGTH_LONG).show();
   }

   mDeviceStatus = DeviceStatus.IDLE;
  }


 

  @Override
  public void onFinish() {
   // TODO Auto-generated method stub
   dismissDialog(DLG_SEND_DATA);

   if (!result) {
   } else {
   }
   Toast.makeText(MainApp.this, resultMsg, Toast.LENGTH_LONG).show();

   mDeviceStatus = DeviceStatus.IDLE;
   mCamera.startPreview();

   중략...

 

 

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  // Hide the window title.
  requestWindowFeature(Window.FEATURE_NO_TITLE);

  getWindow().setFormat(PixelFormat.TRANSLUCENT);
  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);

  setContentView(R.layout.main);

  SurfaceView surfaceView = (SurfaceView) findViewById(R.id.camera_surface);
  SurfaceHolder surfaceHolder = surfaceView.getHolder();
  surfaceHolder.addCallback(this);
  surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

  중략...

 

 

 @Override
 protected Dialog onCreateDialog(int id, Bundle args) {
  // TODO Auto-generated method stub
  switch (id) {
   case DLG_REG_DEVICE:
   case DLG_SEND_DATA:
    return new ProgressDialog(this);
  }
  return super.onCreateDialog(id, args);
 }

 

 

 private void showDialogInner(int id) {
  removeDialog(id);
  showDialog(id, null);
 }


 

위처럼 저렇게 더 이상 쓰이지 않는 코드가 포함되어 있어도 저 소스를 컴파일해서 빌드한 다음 돌려보면

진저브래드랑 아이스크림에서는 어플이 이상없이 정상 작동 하더라구요. 희안합니다. (원래그런건가요?O_O;;)
유독 젤리빈만 안되고 있습니다. 테스트해본 젤리빈은 4.1.2입니다. 안되는 이유를 알아내려면

뭐 부터 차근차근 디버깅 해보면 될까요? 조언 꼭 좀 부탁드릴께요.

그리고 원래 저렇게 Deprecated되어도 구버전에서는 정상적으로 메소드가 작동하는 건지요?