我是Android编程的新手并且卡住了。在我的程序中,我试图访问gps并在textviews中显示纬度,经度等。当我使用模拟器和telnet连接在计算机上运行我的代码时,我能够看到模拟器上显示的数据。但是,当我在Android设备(HTC ADR6300手机)上运行此程序时,我的所有文本视图都是空的,没有数据显示。我只看到标签,但没有数据。我不确定我做错了什么。感谢您的帮助
这是MainActivity.java
public class MainActivity extends Activity {
TextView tvLong;
TextView tvLat;
TextView tvSpeed;
TextView tvAlt;
TextView tvTime;
TextView tvProvider;
String ProviderName;
@Override
protected void onCreate(Bundle savedInstanceState) {
// Get LocationManager to access the GPS data on your phone
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Who is the data provider? Built-in GPS receiver
LocationProvider provider = lm.getProvider("gps");
// Receive location updates from GPS receiver every minute, every 10m
// Read the data using locationListener
lm.requestLocationUpdates("gps", 60000, 1, locationListener);
ProviderName = provider.getName();
}
/** The LocationListener shows the most recent data with every call of onLocationChanged()() */
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location loc) {
setContentView(R.layout.activity_main);
tvProvider = (TextView)findViewById(R.id.ProviderText);
tvLong = (TextView)findViewById(R.id.LonText);
tvLat = (TextView)findViewById(R.id.LatText);
tvSpeed = (TextView)findViewById(R.id.SpeedText);
tvAlt = (TextView)findViewById(R.id.AltText);
tvTime = (TextView)findViewById(R.id.TimeText);
tvProvider.setText(ProviderName);
tvLong.setText(Double.toString(loc.getLongitude()));
tvLat.setText(Double.toString(loc.getLatitude()));
tvSpeed.setText(Float.toString(loc.getSpeed()));
tvAlt.setText(Double.toString(loc.getAltitude()));
Date date = new Date(loc.getTime());
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
tvTime.setText(dateFormat.format(date));
}
//Other methods of LocationListener are not needed, so add empty methods
public void onProviderDisabled(String provider){}
public void onProviderEnabled(String provider){}
public void onStatusChanged(String provider, int status, Bundle extras) {}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void onExitMenu(MenuItem menuItem)
{
finish();
}
}
这是我的activity_main.xml文件。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/provider" />
<TextView
android:id="@+id/ProviderText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#0f0" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/lat" />
<TextView
android:id="@+id/LatText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#0f0"
android:textSize="40.0sp" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/lon" />
<TextView
android:id="@+id/LonText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#0f0"
android:textSize="40.0sp" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/speed" />
<TextView
android:id="@+id/SpeedText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#0f0"
android:textSize="40.0sp" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/alt" />
<TextView
android:id="@+id/AltText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#0f0"
android:textSize="40.0sp" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/time" />
<TextView
android:id="@+id/TimeText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#0f0"
android:textSize="40.0sp" />
</LinearLayout>
这是我的AndroidManifest文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.gps"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
</uses-permission>
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.gps.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>