0

我正在创建一个应用程序,当我的手机进入预定义位置时,它必须通过 gps 自动切换到振动模式,即当我的纬度和经度在 1 公里半径内匹配时,手机应该将其状态更改为振动模式。您的宝贵答案将是赞赏。提前致谢

4

5 回答 5

0

你的应用会做两件事:

  • 收听位置更新
  • 更改铃声模式

1/ 收听位置更新

在这里查看如何在您的应用程序中实现它:http: //developer.android.com/guide/topics/location/strategies.html#Updates

根据您的喜好调用正确的 LocationManager.requestLocationUpdates() 方法:

  • 使用哪个提供商(GPS 更准确但消耗更多电池)
  • 您希望多久(毫秒或米)发送一次更新
  • 如上例所示发送意图或调用监听器
  • ETC

2/ 改变铃声模式

每当您的应用收到位置更新时,您都会获得一个带有坐标的 Location 对象。假设您在应用程序中有预定义的位置进行比较,您可以使用 Location.distanceBetween() 来了解您与预定义位置的距离。如果距离足够近,请更改振铃模式。智人给出的代码似乎没问题。

3/当您不靠近任何预定义的位置时,不要忘记将铃声设置回正常模式!

高温高压

PS:我没有尝试过任何这些,这只是对Android doc的一些快速研究......

于 2013-11-12T07:07:34.973 回答
0

尝试这个:

    AudioManager audio_mngr = (AudioManager) getBaseContext().getSystemService(Context.AUDIO_SERVICE); 

audio_mngr.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
于 2013-11-12T06:12:29.197 回答
0

像这样在清单文件中设置振动权限

<uses-permission android:name="android.permission.VIBRATE"/>

当您进入预定义的位置时,请使用以下代码进行振动。

Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);     
// Vibrate for 300 milliseconds
v.vibrate(300);
于 2013-11-12T06:13:11.980 回答
0

尝试:

Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 500 milliseconds
v.vibrate(500);

笔记:

不要忘记在 AndroidManifest.xml 文件中包含权限:

<uses-permission android:name="android.permission.VIBRATE"/>
于 2013-12-19T11:16:47.300 回答
0
Add Permission
<uses-permission android:name="android.permission.VIBRATE"/>

Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 500 milliseconds
v.vibrate(500);

For Distance :

Location locationA = new Location("point A");

locationA.setLatitude(latA);
locationA.setLongitude(lngA);

Location locationB = new Location("point B");

locationB.setLatitude(latB);
locationB.setLongitude(lngB);

float distance = locationA.distanceTo(locationB);
于 2013-11-12T06:09:44.510 回答