안녕하세요! 다름이 아니고 reco 비콘을 이용해서 비콘이 위치한 거리를 기준으로 일정거리에 도달하면 핸드폰이 무음 상태로 변하고 핸드폰이 일정거리를 비콘에 벗어날경우 벨소리 모드롤 변경하려고 합니다.
아래에 큰 글씨로 표시된 부분이 코드인데 실행을 하면 바로 앱이 종료가 됩니다..
어디가 잘못되었는지 정말 궁금합니다....
public class RecoRangingListAdapter extends BaseAdapter {
private ArrayList<RECOBeacon> mRangedBeacons;
private LayoutInflater mLayoutInflater;
private RECOBeacon recoBeacon;
//private Context context;
int Flagint;
int AudioMode1;
int AudioMode2;
public RecoRangingListAdapter(Context context) {
super();
mRangedBeacons = new ArrayList<RECOBeacon>();
mLayoutInflater = LayoutInflater.from(context);
}
public void updateBeacon(RECOBeacon beacon) {
synchronized (mRangedBeacons) {
if(mRangedBeacons.contains(beacon)) {
mRangedBeacons.remove(beacon);
}
mRangedBeacons.add(beacon);
}
}
public void updateAllBeacons(Collection<RECOBeacon> beacons) {
synchronized (beacons) {
mRangedBeacons = new ArrayList<RECOBeacon>(beacons);
}
}
public void clear() {
mRangedBeacons.clear();
}
@Override
public int getCount() {
return mRangedBeacons.size();
}
@Override
public Object getItem(int position) {
return mRangedBeacons.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
double testNum;
String str;
if(convertView == null) {
convertView = mLayoutInflater.inflate(R.layout.item_ranging_beacon, parent, false);
viewHolder = new ViewHolder();
viewHolder.recoProximityUuid = (TextView)convertView.findViewById(R.id.recoProximityUuid);
viewHolder.recoMajor = (TextView)convertView.findViewById(R.id.recoMajor);
viewHolder.recoMinor = (TextView)convertView.findViewById(R.id.recoMinor);
viewHolder.recoTxPower = (TextView)convertView.findViewById(R.id.recoTxPower);
viewHolder.recoRssi = (TextView)convertView.findViewById(R.id.recoRssi);
viewHolder.recoBattery = (TextView)convertView.findViewById(R.id.recoBattery);
viewHolder.recoProximity = (TextView)convertView.findViewById(R.id.recoProximity);
viewHolder.recoAccuracy = (TextView)convertView.findViewById(R.id.recoAccuracy);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder)convertView.getTag();
}
RECOBeacon recoBeacon = mRangedBeacons.get(position);
String proximityUuid = recoBeacon.getProximityUuid();
Context context = null;
AudioManager mAudioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
viewHolder.recoProximityUuid.setText(" ");
viewHolder.recoAccuracy.setText(String.format("%.2f", recoBeacon.getAccuracy()));
str = viewHolder.recoAccuracy.getText().toString();
testNum = Double.valueOf(str).doubleValue();
if(testNum <= 0.3) {
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
Flagint = 1;
} else if (testNum>=0.31) {
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
Flagint = 2;
}
if(Flagint == 1) {
if(AudioMode1 == 0) {
Toast.makeText(context, "스마트폰이 무음", Toast.LENGTH_LONG).show();
AudioMode1 = 1;
AudioMode2 = 0;
}
}
else if (Flagint == 2) {
if(AudioMode2 == 0) {
Toast.makeText(context,"공간 벗어나서 무음 취소",Toast.LENGTH_LONG).show();
AudioMode2 = 1;
AudioMode1 = 2;
}
}
viewHolder.recoProximityUuid.setText(String.format("%s-%s-%s-%s-%s", proximityUuid.substring(0, 8), proximityUuid.substring(8, 12), proximityUuid.substring(12, 16), proximityUuid.substring(16, 20), proximityUuid.substring(20) ));
viewHolder.recoMajor.setText(recoBeacon.getMajor() + "");
viewHolder.recoMinor.setText(recoBeacon.getMinor() + "");
viewHolder.recoTxPower.setText(recoBeacon.getTxPower() + "");
viewHolder.recoRssi.setText(recoBeacon.getRssi() + "");
viewHolder.recoBattery.setText(recoBeacon.getBattery() + "");
viewHolder.recoProximity.setText(recoBeacon.getProximity() + "");
viewHolder.recoAccuracy.setText(String.format("%.2f", recoBeacon.getAccuracy()));
return convertView;
}
}