在接近特定位置时使手机保持静音

时间:2012-06-12 13:09:47

标签: android

我正在创建一个Android应用程序来显示用户在地图上的位置,以及用户当前的经度和纬度,我还使用反向地理编码来显示Android设备的地址。现在我计划添加一项功能,如果用户在特定地点附近,手机会自动切换到静音模式,为此,我已经开始检查手机是否已经静音。现在我想制作另一个,将手机置于静音模式,靠近特定位置。

我使手机在靠近特定位置时保持沉默的方法是

public void changeToSilent(Location location){

    if(distanceTo(xxxx)<100)
    {
        if(mPhoneIsSilent==true){
        }
        else
        {
            mPhoneIsSilent = true;
            mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
        }
    }
}

现在我在另一个函数中调用此方法,即......

public void onLocationChanged(位置位置)  {         Log.d(TAG,“onLocationChanged with location”+ location.toString()); Stringtext = String.format(“Lat:\ t%f \ nLong:\ t%f \ nAltt:\ t%f \ nBearing:\ t%f”,location.getLatitude(),location.getLongitude(),location。 getAltitude(),location.getBearing()); this.locationText.setText(文本);

    changeToSilent(location);

    try {
      List<Address> addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 10); 
      for (Address address : addresses) {
        this.locationText.append("\n" + address.getAddressLine(0));
      }

      int latitude = (int)(location.getLatitude() * 1000000);
      int longitude = (int)(location.getLongitude() * 1000000);

      GeoPoint point = new GeoPoint(latitude,longitude);
      mapController.animateTo(point); 

    } catch (IOException e) {
      Log.e("LocateMe", "Could not get Geocoder data", e);

    }
  }

现在我在oncreate方法中调用上面的函数。现在假设我知道电话应该靠近静音的地方的纬度和经度。 我想知道的是,在changetosilent方法中我需要用什么来代替xxxx?

1 个答案:

答案 0 :(得分:1)

您可以使用AudioManager更改系统音量级别。

这是一个例子:

AudioManager am =  (AudioManager) getSystemService(AUDIO_SERVICE); 
//am.setStreamVolume(AudioManager.STREAM_MUSIC,6,0); //<-- use this one to set the volume
am.setRingerMode(AudioManager.RINGER_MODE_SILENT); //<-- to put on mute.

编辑:获取Location个对象并使用loc.distanceBetween();