2012-03-25 2 views
0

Android 프로젝트 외부 외부의 Android API 클래스에 액세스하고 싶습니다. 예를 들어 컴퓨터 또는 실행중인 에뮬레이터에 연결된 장치의 Context에 개체를 가져올 수 있습니까?Android 외부의 Java 응용 프로그램에서 Android API에 액세스 할 수 있습니까?

이렇게하면 PowerManager 또는 ActivityManager과 같은 시스템 서비스에 Android 기기 외부에서 액세스 할 수 있습니다. Context 개체를 통해서가 아닌 경우 안드로이드 외부에서 장치/avd에 대한 시스템 서비스에 액세스하는 다른 방법이 있습니까?

+0

Android 기기를 원격 제어하는 ​​것과 비슷합니다. 맞습니까? 그렇지 않은 이유는 무엇입니까? –

+0

종류입니다. 또한 장치의 상태를 알고 그것에 기반한 조치를 취하십시오. – wowamit

답변

3

분산 안드로이드 API 클래스는 컴파일 할 수있는 스텁 일뿐입니다. 호출시 RuntimeException을 던지기 위해 대부분의 무고한 자료도 스텁 아웃됩니다. 시스템의 상태를 알고 싶다면 SDK 도구를 사용해야합니다. 또는 일부 원격 액세스 기술을 통해 앱을 노출하는 앱을 작성하십시오.

+0

확인. SDK 도구는 그대로 사용하는 것이므로 기기의 상태에 따라 몇 가지 조치를 취하는 것이 좋습니다. 나는 장치에 앉아서 원격으로 외부와 통신하도록해야 할 것 같아. 평가하는 또 다른 방법은 adb를 사용하는 것입니다. 그러나 모든 일이 가능하다면 예를 들어 실행중인 프로세스를 찾는 것과 같이 확실하지 않습니다. – wowamit

+0

당신은 쉘에서 얻을 수있는 모든 것을 adb에서 얻을 수 있습니다. ps 실행 가능. 그리고 저는 ADB의 출처가 이용 가능하다고 생각합니다. 그래서 어떤 프로토콜을 사용하고 있는지보십시오. –

0

나는 그것이 가능하다는 것을 대단히 의심합니다. 분산 SDK 클래스에는 내부 API의 많은 부분이 포함되어 있지 않습니다. 예를 들어 this thread을 참조하십시오. 게다가, 어떤 시스템 (또는 하나의 에뮬레이션)을 백업하지 않고 PowerManager과 같은 시스템 서비스 객체를 사용하려면 어떤 용도가 있을까요?

+0

먼저, _is_ running (연결된 장치 또는 avd 실행 중) 시스템에 시스템 서비스 개체가 필요합니다. 둘째, 실제 시스템 외부의 장치/에뮬레이터 시스템 상태를 파악하는 데 도움이됩니다. – wowamit

+1

@wowamit - 최선의 방법은 외부 연결 (예 : 전화에서 호스팅되는 웹 서비스)에 특정 기능을 제공하는 서비스를 작성하는 것입니다. direclty가 Android API의 클래스에 링크하는 Java 데스크탑 프로그램을 작성할 수 없습니다. –

+0

고마워요! 원격 통신이 유일한 방법 인 것처럼 보입니다. 적어도 Android 범위를 벗어난 시스템 상태와 관련된 객체를 사용하기를 희망했습니다. – wowamit

0

기기를 원격으로 제어하는 ​​것만큼이나 기기에서 실제로 액세스하지 않는 것처럼 들리는 것 같습니다. 이 경우, 살펴 봐야 할 몇 가지 외부 도구가 있습니다. 도구는 주로 테스트에 초점을 맞추고 있으며 앱용 도구를 기반으로합니다. robotium과 monkeyrunner를 보면서 시작할 수 있습니다. 원하는 기능을 수행하는 데 도움이되는 약간의 기능을 제공합니다. 그 외에도 도구에서 수행하는 작업을 수행하고 adb의 의도를 수신하고 해당 의도를 기반으로 작업을 수행하는 등의 응용 프로그램을 작성할 수 있습니다.하지만 분명히 높은 수준에서 많은 의사 소통을 수행 할 것입니다 따라서 이것은 가장 효율적이지 않을 수도 있습니다 (그리고 나는 당신이 원하는 것처럼 들리는 실제 RPC에 필요한 많은 데이터를 어떻게 전송할 지 확신하지 못합니다).

+0

Robotium 및 Monkeyrunner와 관련된 몇 가지 문제점이 있습니다. 하나는 응용 프로그램에만 해당됩니다. 둘째, 심지어 그 경우에도 매번 그렇지 않을 수도있는 코드에 대한 액세스를 가정합니다. 일어날 일이 많은 의사 소통에 대한 귀하의 요점에 동의하지만, 나는 온 - 장치 옵션을 통해가는 것을 피하고자하는 이유와 정확히 일치합니다. – wowamit

+0

장치와 안드로이드 OS가 현재 이런 종류의 것을 지원하지 않기 때문에 당신은 확실히 장치가 실행 중일 때 뭔가를 필요로 할 것입니다 ... –

+0

어떻게 든 그것을 처리 할 방법을 찾아야 할 것입니다. 어쨌든 포인터에 감사드립니다. – wowamit

관련 문제