안드로이드에서 addProximityAlert() 질문드립니다.
제가 위도와 경도를 이용하여 addProximityAlert()를 호출했습니다.
expiration은 -1로 주었구요.
근데 이게 위도 경도를 입력하고 등록 버튼을 누르게 되면 누르는 순간에는 해당 위치에 근접해있는지 멀리 떨어져 있는지의 여부를 토스트 메시로 띄워줍니다.
근데 제가 알기로는 expiration값이 -1이면 알림을 해제하지 않았기 때문에 토스트 메시지가 계속 떠야할거 같은데 그게 안되네요...
한번만 보여주고 다시 안뜹니다.... 혹시 제가 이해하고 있는게 틀린건가요?? ㅠㅠ
package com.example.sumin.msp_assignment01;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Layout;
import android.view.View;
import android.widget.*;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
LocationManager locManager; // 위치 정보 프로바이더
LocationListener locationListener; // 위치 정보가 업데이트시 동작
PendingIntent proximityIntent;
AlertReceiver receiver;
String name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Button bt_setAlarm = (Button) findViewById(R.id.bt_alarm);
Button bt_regist = (Button) findViewById(R.id.bt_regist);
final String currentName;
final EditText input_latitude = (EditText) findViewById(R.id.input_latitude);
final EditText input_logitude = (EditText) findViewById(R.id.input_logitude);
final EditText input_name = (EditText) findViewById(R.id.input_name);
final LinearLayout setting = (LinearLayout) findViewById(R.id.settingMenu);
final TextView location_latitude = (TextView) findViewById(R.id.val_latitude);
final TextView location_logitude = (TextView) findViewById(R.id.val_logitude);
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
location_latitude.setText(" " + location.getLatitude());
location_logitude.setText(" " + location.getLongitude());
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
// GPS 프로바이더를 통해 위치를 받도록 설정
// 2초 간격으로 위치 업데이트
// 위치 정보를 업데이트할 최소 거리 0m
bt_setAlarm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setting.setVisibility(View.VISIBLE);
}
});
bt_regist.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Toast.makeText(MainActivity.this, input_name.getText().toString() + " 정보가 등록되었습니다..", Toast.LENGTH_SHORT).show();
setting.setVisibility(View.INVISIBLE);
receiver = new AlertReceiver();
IntentFilter filter = new IntentFilter("kr");
registerReceiver(receiver, filter);
Intent intent = new Intent("kr");
proximityIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
try {
System.out.println("Alert");
name = input_name.getText().toString();
locManager.addProximityAlert(Double.parseDouble(input_latitude.getText().toString()), Double.parseDouble(input_logitude.getText().toString()), 50, -1, proximityIntent);
} catch (SecurityException e) {
e.printStackTrace();
}
}
});
}
class AlertReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int count = 0;
System.out.println("In onRecevice"+ count++);
boolean isEntering = intent.getBooleanExtra(LocationManager.KEY_PROXIMITY_ENTERING, false);
if(isEntering)
Toast.makeText(context, name + " 지점에 접근중입니다..", Toast.LENGTH_SHORT).show();
else
Toast.makeText(context, name + " 지점에서 벗어납니다..", Toast.LENGTH_SHORT).show();
}
}
public void onStop(){
super.onStop();
locManager.removeUpdates(locationListener);
unregisterReceiver(receiver);
}
}
//////////////////////////////////////////////////////
<?xml version="1.0" encoding="utf-8"?>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="현재위치"
android:id="@+id/currentLocation" />
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="위도:" />
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/val_latitude" />
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="경도:" />
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/val_logitude" />
android:orientation="horizontal"
android:layout_width="match_parent"
android:gravity="center"
android:layout_height="wrap_content">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="경보설정"
android:id="@+id/bt_alarm" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="경보해제"
android:id="@+id/bt_removeAlarm" />
android:orientation="vertical"
android:visibility="invisible"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/settingMenu">
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="위도" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/input_latitude"
android:layout_weight="1" />
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="경도"
android:id="@+id/textView3" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/input_logitude"
android:layout_weight="1" />
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="이름"
android:id="@+id/textView5" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/input_name"
android:layout_weight="1" />
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="등록"
android:id="@+id/bt_regist" />
첨부 | 파일 크기 |
---|---|
KakaoTalk_20160401_221913058.jpg | 37.57 KB |
글을 작성 할 때는 들여쓰기가 잘되있었는데...
내용이 많이 보기 힘드네요 ㅠㅠ
그래도 잘 부탁드립니다.
보기 힘드시면 소스를 첨부해서 올리도록 할게요
댓글 달기