2015-04-28 4 views
0

Я пытаюсь поймать идентификаторы ячеек вручную. Мне удалось получить идентификатор ячейки, который сначала подключался к моему мобильному телефону. Однако я не могу объяснить это точно, кажется, что он не синхронизируется. Я перемещался несколько раз, но он всегда возвращает первый идентификатор ячейки.GsmCellLocation возвращает то же значение

public class MainActivity extends Activity { 
private TextView textView; 
private GsmCellLocation gsmCellLocation; 
private TelephonyManager telephonyManager; 
private String cId = "", lac = ""; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    textView = (TextView) findViewById(R.id.textView); 

    telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
    gsmCellLocation = (GsmCellLocation) telephonyManager.getCellLocation(); 
    telephonyManager.listen(listener, 
      PhoneStateListener.LISTEN_CELL_LOCATION); 

} 

private Handler handler = new Handler() { 

    @Override 
    public void handleMessage(Message msg) { 
     // TODO Auto-generated method stub 
     super.handleMessage(msg); 
     switch (msg.what) { 
     case 1: 
      updateText(); 
     } 
    } 

}; 


public String updateLocation() { 
    cId = Integer.toHexString(gsmCellLocation.getCid()); 
    lac = Integer.toString(gsmCellLocation.getLac()); 
    return "cId: " + cId + "\nLac: " + lac + "\n===============\n"; 
} 

public void updateText() { 
    Toast.makeText(getApplicationContext(), updateLocation(), 
      Toast.LENGTH_SHORT).show(); 
    textView.append(updateLocation()); 
} 

private PhoneStateListener listener = new PhoneStateListener() { 

    @Override 
    public void onCellLocationChanged(CellLocation location) { 
     // TODO Auto-generated method stub 
     super.onCellLocationChanged(location); 

     handler.sendEmptyMessage(1); 
    } 

}; 
} 

ответ

1

Не следует добавлять:

MainActivity.this.gsmCellLocation = (GsmCellLocation) telephonyManager.getCellLocation(); 

внутри onCellLocationChanged метода?

+0

Спасибо! теперь это работает !! – Bana

Смежные вопросы