2012-01-14 5 views
5

내 앱에서 진동기 방법을 사용하고 싶습니다. 진동 장치가있는 휴대 전화에서 작동시키고 있습니다. 그러나 진동기가없는 전화기는 어떻게됩니까? 전혀 작동하지 않습니까? 앱 작동을 멈추게합니까? 또는 전혀 시장에 나타나지 않는가? 아니면 진동기가 있는지 전화로 질문해야합니까?Android : vibrator method (휴대 전화에 진동기가없는 경우)

이 코드가 좋은지 또는 조정해야하는지 알고 싶습니다. 여기에 내 코드가있다.

Vibrator vi; 

vi = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 

vi.vibrate(100); 

<uses-permission android:name="android.permission.VIBRATE" /> (In manifest) 

감사합니다. 도움이 될 것입니다.

답변

14

확인 문서, http://developer.android.com/reference/android/os/Vibrator.html

당신이 진동이 전화에 존재과 같이 있는지 확인하기 만하면 모든 :

때문에 안드로이드 마켓 을 필터링 할 수있는 진동 권한의
Vibrator vi; 

vi = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 

if(vi.hasVibrator()){ 
    vi.vibrate(100); 
} 

당신의 앱을 진동이있는 휴대 전화에만 적용 할 수 있습니다. 이를 방지하려면 그것은 모두 여기에 = "false"를 문서화 요구

<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-feature android:name="there.isnt.a.vibrate.feature" android:required="false" /> 

의 속성을 가진 태그를 사용할 수 있습니다 그러나

http://developer.android.com/guide/topics/manifest/uses-permission-element.html

http://developer.android.com/guide/topics/manifest/uses-feature-element.html

진동 기능 문자열이 없으므로 Android 마켓 진동 권한을 사용 중이기 때문에에 필터를 적용 할 수 없습니다. 따라서 Java 코드에서 uses-permission을 사용하고 체크 만하면됩니다.

기기는 안드로이드 마켓과 호환되도록 진동기가 필요하지만 당연히 아마존 및 기타 앱 마켓에는 적합하지 않습니다. (Barnes & Noble Nook에는 진동이 없습니다.)

이 다이앤 Hackthorn (구글의 안드로이드 리드 디바이스)에 의해 백업이 글타래에 댓글을 올리 : http://groups.google.com/group/android-developers/browse_thread/thread/7713e796ea2d0f5f

+2

API 레벨 11에 hasVibrator()가 추가되었습니다. 그보다 오래된 기기는 주로 진동 모터를 탑재 할 예정이며, 특히 안드로이드 마켓이있는 경우에는 특히 그렇습니다. – CommonsWare

+0

나는이 문서를 읽었으며 이것에 대해서는 아무 말도하지 않는다. API 7에서 실행 중이므로 "hasVibrator"를 사용할 수 없으므로 바이브레이터가없는 경우 어떻게됩니까? –

+1

그냥 무시하고 진동하지 않습니다! 리플렉션을 사용하여 이러한 장치에 대한 api lvl 11 호출을 호출 할 수 있습니다. 아이디어를 어떻게 구현할 것인가에 달려 있습니다. – Blundell

2

는 전혀 작동하지 않는 이유는 무엇입니까? 앱 작동을 멈추게합니까?

진동 요청은 무시해야합니다.

또는 시장에 전혀 표시되지 않습니까?

진동 모터가없는 마켓의 장치는 걸러 낼 수 없습니다. 따라서 VIBRATE은 그 중 하나가 아닙니다. if you ask for it imply a hardware feature입니다.

나는 진동기가 있는지 전화해야합니까?

API 레벨 11 이상에서 Blundell의 답변을 참조 할 수 있습니다.

+0

그럼 API 7에서 일하는 중이라면 시장에서 걸러지지 않을 것이고 전화가 바이브레이터가 없다면 그냥 놓쳐 버릴테니까 내가 지금 가지고있는 모든 것을 유지할 수 있을까요? –

+0

@ JackTrowbridge : AFAIK, 네. – CommonsWare