gpt4 book ai didi

android - GPS代码没有错误但不显示位置

转载 作者:太空狗 更新时间:2023-10-29 16:23:04 26 4
gpt4 key购买 nike

是的,它会在模拟器上运行,但不会显示位置。 GPS 也在设置中打开。我从一个教程中获得了代码,它对很多人都有效,但 no1 遇到了我的问题。如果有人能告诉我原因,我将不胜感激。哦,我在 android 2.2 上运行

这是我的代码:

package gps.attempt;

import android.app.Activity;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;

public class GpsAttemptActivity extends Activity implements LocationListener {

/* this class implements LocationListener, which listens for both
* changes in the location of the device and changes in the status
* of the GPS system.
* */

static final String tag = "Main"; // for Log

TextView txtInfo;
LocationManager lm;
StringBuilder sb;
int noOfFixes = 0;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

/* get TextView to display the GPS data */
txtInfo = new TextView(this);

/* the location manager is the most vital part it allows access
* to location and GPS status services */
lm = (LocationManager) getSystemService(LOCATION_SERVICE);
}

@Override
protected void onResume() {
/*
* onResume is is always called after onStart, even if the app hasn't been
* paused
*
* add location listener and request updates every 1000ms or 10m
*/
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 10f, this);
super.onResume();
}

@Override
protected void onPause() {
/* GPS, as it turns out, consumes battery like crazy */
lm.removeUpdates(this);
super.onResume();
}

@Override
public void onLocationChanged(Location location) {
Log.v(tag, "Location Changed");

sb = new StringBuilder(512);

noOfFixes++;

/* display some of the data in the TextView */

sb.append("No. of Fixes: ");
sb.append(noOfFixes);
sb.append('\n');
sb.append('\n');

sb.append("Londitude: ");
sb.append(location.getLongitude());
sb.append('\n');

sb.append("Latitude: ");
sb.append(location.getLatitude());
sb.append('\n');

sb.append("Altitiude: ");
sb.append(location.getAltitude());
sb.append('\n');

sb.append("Accuracy: ");
sb.append(location.getAccuracy());
sb.append('\n');

sb.append("Timestamp: ");
sb.append(location.getTime());
sb.append('\n');

txtInfo.setText(sb.toString());
}

@Override
public void onProviderDisabled(String provider) {
/* this is called if/when the GPS is disabled in settings */
Log.v(tag, "Disabled");

/* bring up the GPS settings */
Intent intent = new Intent(
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}

@Override
public void onProviderEnabled(String provider) {
Log.v(tag, "Enabled");
Toast.makeText(this, "GPS Enabled", Toast.LENGTH_SHORT).show();

}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
/* This is called when the GPS status alters */
switch (status) {
case LocationProvider.OUT_OF_SERVICE:
Log.v(tag, "Status Changed: Out of Service");
Toast.makeText(this, "Status Changed: Out of Service",
Toast.LENGTH_SHORT).show();
break;
case LocationProvider.TEMPORARILY_UNAVAILABLE:
Log.v(tag, "Status Changed: Temporarily Unavailable");
Toast.makeText(this, "Status Changed: Temporarily Unavailable",
Toast.LENGTH_SHORT).show();
break;
case LocationProvider.AVAILABLE:
Log.v(tag, "Status Changed: Available");
Toast.makeText(this, "Status Changed: Available",
Toast.LENGTH_SHORT).show();
break;
}
}

@Override
protected void onStop() {
/* may as well just finish since saving the state is not important for this toy app */
finish();
super.onStop();
}

这是我的 list :

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="gps.attempt"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".GpsAttemptActivity"
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>

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />

最佳答案

您的问题(至少)是您的 TextView 不可见。您应该在 res/layout/main.xml 中添加一个 TextView 并使用它来显示文本。例如:

/* get TextView to display the GPS data from Layout*/
txtInfo = (TextView) findViewById(R.id.textView1);

和 xml 中的 TextView 看起来像

<TextView android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

编辑:正如 NickT 指出的那样,您还必须在 onPause() 中将 super.onResume() 更改为 super.onPause() >

Edit2:您不需要使用 StringBuilder 来构建您的字符串。你可以安全地做

String text = "No. of Fixes: " + 
noOfFixes +
'\n' +
// and so on
'\n';
txtInfo.setText(text);

Java 编译器将自动使用 StringBuilder,但您的代码看起来更干净。参见例如when to use StringBuilder in java

关于android - GPS代码没有错误但不显示位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9604576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com