2012-06-12 4 views
2

사용자의 현재 위도와 경도와 함께 사용자의 위치를지도에 표시하도록 Android 애플리케이션을 만들고 있으며, 역 지오 코딩을 사용하여 안드로이드 장치. 이제 사용자가 특정 장소 근처에있을 경우 자동으로 전화가 자동 모드로 전환되는 기능을 추가 할 계획입니다.이 기능은 전화가 이미 침묵하는지 여부를 확인하는 기능입니다. 이제 다른 위치를 만들고 싶습니다. 전화를 자동 모드로 설정하면 특정 위치에 근접합니다.특정 위치에 가까워지면 전화 소리가 들리지 않음

내가 전화를 만들기 위해 만든 방법은 특정 위치에 근접에 침묵 갈

는 .... 공공

public void changeToSilent(Location location){ 

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

지금은 또 다른 기능에서이 메서드를 호출하고있다 void onLocationChanged (Location location) { Log.d (TAG, "onLocationChanged with location"+ location.toString()); StringText = String.format ("Lat : \ t % f \ nLong : \ t % f \ nAlt : \ t % f \ n 참고 : \ t % f", location.getLatitude(), location.getLongitude(), location. getAltitude(), location.getBearing()); this.locationText.setText (text);

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

StackOverflow는 프로그래밍 관련 질문입니다. 귀하의 질문은 무엇인가? 그리고 귀하의 질문은 "나는 이것을 어떻게합니까?"라고 예견하면서 무엇을 시도 했습니까? – CommonsWare

+1

귀하의 코드를 의견 대신 편집하여 게시하십시오. – FoamyGuy

+0

다음과 같은 방법으로 전화기의 모드를 무음으로 변경했습니다. 공개 무효 changeToSilent (위치 위치) { \t \t \t \t 경우 (distanceTo (XXXX) <100) \t \t { \t \t \t 경우 (mPhoneIsSilent == TRUE) { \t \t \t} \t \t \t else \t \t \t { \t \t \t \t mPhoneIsSilent = true; \t \t \t \t mAudioManager.setRingerMode (AudioManager.RINGER_MODE_SILENT); \t \t \t} \t \t} \t} –

답변

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()를 사용;

+0

내가 직면하고있는 문제는 내 distanceTo() 메소드입니다. 내 질문을 편집했습니다. 다시 읽으시기 바랍니다. 가능한 경우 제 문제에 대한 해결책을 제시하십시오. 고맙습니다. –

+0

내 편집 참조 .... – FoamyGuy

관련 문제