クラスのプロジェクトと論文の作業 - 具体的には getBaseStationLatitude() と getBaseStationLongitude() を使用して、CDMA セルから情報を取得しようとしています。返される値は MAX_VALUE (2147483647) です - 実際の緯度/経度を受け取っていません。getBaseStationID()、getNetworkID()、および getSystemID() が有効な ID を返しています。これを2つの別々のセルでテストしましたが、うまくいきませんでした。私のコードは以下に掲載されています。ACCESS_FINE_LOCATION と ACCESS_COURSE_LOCATION の両方がマニフェストに追加されます。テストは Droid、Android 2.2.2 で行われました。
質問 - 同じ問題に遭遇した人はいますか? コードに何か不足していますか? これらの値はどこで保存され、発行されますか (たとえば、これらの座標は基地局で割り当てられ、常にモバイル デバイスに送信されますか)?
コード:
package xXx.edu.com;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.telephony.cdma.CdmaCellLocation;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class CDMAData extends Activity implements OnClickListener{
CdmaCellLocation location;
int cellID, lat, lon, netID, sysID;
private Context context;
Button getDataBtn;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = (Context) this;
setContentView(R.layout.cid);
setConnections();
}
private void setConnections() {
getDataBtn = (Button) this.findViewById(R.id.getID);
getDataBtn.setOnClickListener(this);
}
public void onClick(View v) {
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
location = (CdmaCellLocation) tm.getCellLocation();
cellID = location.getBaseStationId();
lat = location.getBaseStationLatitude();
lon = location.getBaseStationLongitude();
netID = location.getNetworkId();
sysID = location.getSystemId();
TextView myView1 = (TextView) findViewById(R.id.bsID);
myView1.setText("" + cellID);
TextView myView2 = (TextView) findViewById(R.id.bsLat);
myView2.setText("" + lat);
TextView myView3 = (TextView) findViewById(R.id.bsLon);
myView3.setText("" + lon);
TextView myView4 = (TextView) findViewById(R.id.netID);
myView4.setText("" + netID);
TextView myView5 = (TextView) findViewById(R.id.sysID);
myView5.setText("" + sysID);
}
}