2011-02-11 4 views
0

그래서 안드로이드 API를 가지고 놀고 있으며, 휴대 전화가 향하고있는 제목을 가져 오는 방법을 알아 내려고 노력 중입니다.오리엔테이션 센서 (HTC Desire)에 액세스 할 때 Android 프로그램이 중단되는 이유는 무엇입니까?

나는 다음과 같은 코드가 있습니다

private SensorManager mSensorManager; 
private Sensor mAcceller; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); 
    checkNotNull(mSensorManager); 
    try { 
     mAcceller = mSensorManager.getSensorList(3).get(0); 
    } catch (Exception e) { 
     showToast(e.getMessage(), Toast.LENGTH_LONG); 
    } 
} 

을하지만 내 휴대 전화에서 실행하려고 할 때 난 그냥 프로그램이 추락 한 메시지가 표시됩니다. 에뮬레이터에서 실행하면 센서가 없다는 것을 알 수 있습니다 (예상 할 수있는 것은 있지만 코드를 테스트 할 수 없음을 의미합니다).

누구든지이 문제를 해결하는 방법을 알고 있습니까? try 문에서 오류가 발생한다는 것을 알고 있습니다. 주석을 달면 프로그램이 실행되기 때문입니다.

편집 : 센서가 켜졌다는 알림을 받기위한 응답으로 내가 코드에서 다른 곳으로 참조 할 때 충돌이 발생했습니다.

Dave 귀하의 의견을 답변으로 업그레이드하는 경우, 디버거의 작동 방식을 알게 된 후 문제를 발견 한 이후 허용 된 것으로 표시합니다.

+0

휴대 전화에서 코드를 실행하고 오류의 logcat 출력을 가져옵니다. 그런 다음 스택 추적을 여기에 게시하십시오. –

+2

컬렉션에서 임의의 인덱스를 가져 오는 것은 일반적으로 인덱스가 있는지 먼저 확인하지 않는 것이 좋습니다. –

답변

0

먼저 방향 센서가 사용되지 않습니다.

둘째, 정수가 아닌 SensorTYPE_ 상수를 사용하십시오. 예 :

mSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER); 
+0

맞습니다.하지만 둘 중 하나를 수행하는 것은 더 복잡한 샘플 코드를 필요로 할 것이고 필요하지 않습니다 (단지 디버깅하기 위해 휴대 전화에서만 실행해야하며 하나의 센서가 있습니다). – tomjen

관련 문제