비콘 기본 제공 sdk을 이용해서 기능 하나를 추가 중에 있습니다.(비콘과의 수신거리가 3미터 이내면 무음모드로, 3미터를 벗어나면 벨모드로 바꾸게하는 기능입니다.)
그런데,
아래 코드중에 빨간색으로 표시된 context 부분이 자꾸 빨간색으로 뜨고 있습니다.
혹시나해서 맨 처음에 Context context = null; 을 추가해보면 빨간것이 사라지지만 앱을 run 시켜보면
앱이 중지되었다고 뜹니다. 아무래도 저 context 때문에 그런 것 같습니다.
저 빨간 context가 왜 에러가 뜨는지 도저히 모르겠습니다.. 알려주시면 정말 감사드리겠습니다.
고민고민 끝에 해결이 안되서 이렇게 질문을 드리게 됐습니다.. 읽어주셔서 감사합니다!!
(파란색 부분은 제가 추가한 코드들이고, 빨간색은 에러뜨는 context 입니다.)
// 전체 코드는 아니고 일부분 발췌했습니다.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
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);
AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
String proximityUuid = recoBeacon.getProximityUuid();
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.recoProximity.setText(" ");
//viewHolder.recoAccuracy.setText(String.format("%.2f", recoBeacon.getAccuracy()));
viewHolder.recoAccuracy.setText(String.format("%.2f", recoBeacon.getAccuracy()));
String str = viewHolder.recoAccuracy.getText().toString();
double testNum = Double.valueOf(str).doubleValue();
int Flagint = 0;
int AudioMode1 = 0;
int AudioMode2 = 0;
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 = 0;
}
}
return convertView;
}