2017-09-29 25 views
2

사용자 정의 개발 보드에서 작업 중이며 현재 Android 7.1에서 "Sensor HAL"을 구현 중입니다.Android HAL이 poll() 함수에서 시스템을 멈추게합니다.

우리는 안드로이드 센서 서비스 요구 사항 (sensor.h)에 따라 "센서 HAL"API를 구현했으며 동일하게 .so 파일을 빌드 할 수 있습니다. (사용자 정의 수정으로 인해 이미 사용 가능한 HAL을 사용할 수 없습니다.)

"Sensor HAL"을 통합 한 후 Android가 멈추었 고 Android 잠금 화면까지 도달 할 수 없음을 알 수 있습니다. nuSensorService 시작 ...

  • "센서 HAL은"센서 서비스에 의해로드

  • "센서 HAL"공모 성공적인 :

    우리의 관찰 WRT 안드로이드 센서 서비스 동작은

    1. SensorService

    2. "센서 HAL"get_sensor_list 호출 성공

    3. "Sensor HAL"폴링 함수가 매번 성공적으로 호출됩니다. ...
      nuSensorService 시작 : 58 : 48.258 1461 1461 D SensorService이

    4. 안드로이드 부팅은 참조

      01-01 : 00 "Bootanimation"화면에서

    로그를 부착 01-01 00 : 58 : 48.260 1461 1461 D Sensor_HAL : OpenSensors : 이름 = poll
    01-01 00 : 58 : 48.260 1461 1461 D Sensor_HAL : 종료 중 ... OpenSensors : 이름 = poll
    ,01-01 00 : 58 : 48.260 1,461 1,461 Sensor_HAL D : 58 : 01-01 @GetSensorList
    00 입력 48.260 1,461 1,461 D Sensor_HAL : 나가기 @GetSensorList
    01-01 00 : 58 : 48.261 1,461 1,461 Sensor_HAL D : @SensorDeviceActivate 입력, 사용 가능 0
    01-01 00 : 58 : 48.261 1461 1461 D Sensor_HAL : @SensorDeviceActivate, 핸들 1 입력 가능 0
    01-01 00 : 58 : 48.262 1461 1461 D Sensor_HAL : SensorDeviceActivate는 2 처리 0
    활성화 01-01 00 : 58 : 48.262 1,461 1,461 D를 Sensor_HAL : 입력 @GetSensorList
    01-01 00 : 58 : 48.262 1,461 1,461 D Sensor_HAL : 나가기 @GetSensorList
    ,369,136 01-01 (3210) 00 : 58 : 48.262 1,461 1,461 D Sensor_HAL : 입력 @GetSensorList
    01-01 00 : 58 : 48.262 1,461 1,461 D Sensor_HAL : 나가기 @GetSensorList
    01-01 00 : 58 : 48.264 1,461 1,463 D SensorService : nuSensorService 스레드 시작 ...
    01-01 00 : 58 : 49.953 1,461 1,462 D SensorService : 새로운 스레드 SensorEventAckReceiver 시스템이 중단 원인 => 상기 통화 폴 기능

    .

    => Android 부팅이 여기에 걸렸습니다.

    현재 poll() 명령의 구현은 타임 스탬프가있는 더미 가속도계 이벤트를 상위 계층으로 반환한다는 점에 유의하십시오. 리턴 값은 복 g 된 데이터 이벤트 수입니다.

    이해가 부족하거나 잘못되었을 때 저를 교정하십시오.

  • +0

    우리는 여전히이 문제에 직면 해 있습니다. 이 문제에 직면 한 사람이 있습니까? 사전에 도움을 주셔서 감사합니다. – Harshit

    답변

    0

    얘들 아,

    마지막으로, 나는 지연이 동일한 기능에 추가하여이 문제를 해결할 수입니다.

    스레드에서 Poll() 함수가 호출되어 시스템 클라이언트 (SensorManager)에 이벤트를 전송 중입니다. 지연없이 함수에서 직접 복귀하기 때문에 이벤트는 더 빠른 속도로 푸시되고 다른 스레드를 예약 할 시간이 없습니다.

    이 작업을 완료하려면 지연 시간이 필요합니다.