2012-04-24 3 views
1

그래, 여기에 내가 블루투스를 통해 휴대 전화에 연결된 비디오 카메라가있는 문제가 있습니다. 기기와의 모든 통신은 Android 서비스를 통해 이루어집니다. 서비스는 GPS 좌표로 카메라를 주기적으로 업데이트합니다. 안타깝게도 내 회사에서 서비스를 작성하지 않았으므로 서비스를 시작하고 명령을 보내도록 제어 할 수 있습니다 (단, 장치에 연결되어있는 경우 GPS는 자체적으로 수행합니다). 애플리케이션에 의해 서비스가 시작되면 우리 회사 OUI가 포함 된 페어링 된 장치에 연결을 시도합니다. 기기가 연결 해제되면 (기기가 꺼져 있거나 배터리가 소모 될 수 있음) 사용자가 애플리케이션을 다시 시작할 때까지 자동으로 다시 연결되지 않습니다. 따라서 GPS 좌표는 해당 시나리오에서 카메라로 전송되지 않습니다.알람 관리자를 사용하여 메인 애플리케이션이 실행되지 않는 경우에만 서비스를 시작하십시오.

사용자가 연결해야하는 장치를 다시 켜면 사용자가 (이 서비스에 대해 알지 못하고 무엇을 알지 못하기 때문에) 문제가 될 수 있습니다.

그래서 나는 AlarmManager를 브로드 캐스트 리시버 또는 서비스 (아마 몇 초가 걸리기 때문에 인 텐트 서비스)와 함께 사용할 수 있다고 생각했다. 아마도 몇 분 전까지 만해도 카메라에 연결되어 있는지 확인할 수있었습니다. 현재 연결이 끊어지면 연결을 시도하지 않는 경우 (페어링 된 장치가있는 경우).

그러나 내 응용 프로그램이 이미 실행중인 경우 문제는 무엇입니까? 장치가 연결되어 있으면 사용자가 장치에 연결하는 것을 제어합니다 (장치를 요청하는 메시지가 표시됨). 내 응용 프로그램이 실행되고 있거나 종료되었는지 알려면 공유 환경 설정 또는 이와 비슷한 것을 사용해야합니까? 응용 프로그램이 실행중인 경우 서비스에서 알 수있는 방법이 있습니까? 나는 이것이 까다로워지는 것을 볼 수있다. 누구든지이 문제를 처리하는 방법을 알고 있다면 알려주십시오.

답변

1

Binyamin Sharet의 답변은 좋았지 만 불행히도 응용 프로그램이 더 이상 보이지 않거나 사용 중일 때 여전히 실행 중일 수 있으므로 응용 프로그램이 실제로 종료 될 때까지 내 문제가 해결되지 않았습니다. 다른주의해야 할 점은 서비스/수신기 또는 다른 구성 요소가 시작되어 Application 클래스를 인스턴스화하여 까다로운 작업을 수행 할 수있는 경우입니다.

아마도 내 질문에 불만을 나타 냈을 것입니다. 그러나 내가 원했던 것은 응용 프로그램이 활발하게 열려 있거나 (사용 중일 때) 연결을 재설정하려고 시도하는 것을 방지하는 것이 었습니다.

공유 된 환경 설정에 상태 (통화 중/통화 중이 아님)를 작성하고 알람 관리자에서 실행 한 내 코드에서 확인하는 것이 훨씬 쉽습니다. 유지하고 싶은 약간의 여분의 상태이었다. 그러나 나는 정말로 원하지 않았다. 그렇게 어렵지 않았다.응용 프로그램이, 블루투스가 켜져 있으면 그렇게

  • 확인을 종료하면, (공유의 환경 설정에서) 경우 제어되는 경우

    1. 확인 :

      나는 다음과 같은 분마다 일어나 할 commonsware 깨어 의도를 사용 하지 후 연결을 시도 장치 회담 서비스에
    2. 바인드를 종료하고 하나가 이미 연결되어있는 경우에는 장치가 연결되어 있지 않으면 그렇게
    3. 을 종료하면, 확인 (하지만, 쌍을 이루는 장치가있다)

    비록 내가 이것을 최적화 할 수 있을지 모르지만 그것은 작동하고 꽤 틀린 증거가 될 것 같습니다. 배터리로는 좋지 않지만 내 배터리를 사용하는 앱 목록에는 내 애플리케이션이 표시되지 않는다는 것을 안다. (안드로이드는 더 많이 사용하고있는 것 같지만). 내가 생각할 수있는

    유일한 개선 사항은 다음과 같습니다

    가 해제 될 때까지 이미 매 순간 을 서비스를 깨어 정지를 연결하고있어 경우
    1. .
    2. 블루투스를 사용 중지하면 서비스가 중지됩니다. 다시 사용하도록 설정되면 매분마다 다시 연결을 시작합니다. 인 텐트 필터를 사용하여 블루투스를 사용할 수있게되면 알림을받을 수있는 방법이 있다고 생각합니다.

    간단히하기 위해 아직 구현하지 않았습니다.

  • 1

    나는 다음과 같은 방법을 제안 : X 분에서 서비스를 시작

    1. 알람 설정을
    2. X-1 분 동안 응용 프로그램에 대한
    3. Immediatly 설정 타이머
    4. 응용 프로그램의 타이머가 만료 : 현재 서비스를 취소하고 서비스에 대한 새 알람을 설정하고 애플리케이션에 새 타이머를 설정합니다.

    이 방법을 사용하면 응용 프로그램이 여전히 실행 중이면 서비스가 시작되지 않고 응용 프로그램이 종료되면 경보가 중지되지 않습니다.

    +0

    나는 이런 일이 일어나는 곳에서 약간 혼란 스럽다. 당신은 정교 할 수 있습니까? 알람을 설정하여 X 분 후에 서비스를 시작한다고 가정 할 때, 내 응용 프로그램이나 부팅시 실행되는 내용이 무엇입니까? X는 사용하려는 간격 (단지 2 분이면 1 분 안에 시작하도록 설정 함)입니다. 나는 내 애플 리케이션에서 이것을하고 있다고 가정한다. Activity 나 내 Application 클래스에 넣을 수 있을까? –

    +0

    나는 귀하의 신청서를 의미합니다. 응용 프로그램 사용 중에 한 활동에서 다른 활동으로 이동할 수 있으므로 응용 프로그램 자체에서 설정하는 것이 좋으며 활동에서 설정하는 것이 좋습니다. 내가 X라고 말할 때, 나는 그 간격을 의미하지만, 그것을 반복하도록 설정하지 않는다. 그리고 호출 될 때 그것을 다시 설정한다. – MByD

    +0

    괜찮은 것 같습니다. 감사. –

    관련 문제