0

つまりね。試してみるためだけにgpsに固有のものだけが含まれている分離されたクラスで使用したのと同じ関数を使用しました。座標値が間違っていると言わなければなりませんが、動作します。現在、実際のプロジェクトに同じ関数を実装しようとしましたが、機能していません。携帯電話でGPSを有効にするか無効にするかは検出されましたが、調整の値が表示されません。

コードについては、2つのクラスを作成しました。Froyo2ActivityおよびMyLocationListener。Froyo2Activityは、Activityを拡張するだけのメインアクティビティであり、MyLocationListenerはLocationListenerを実装します。見やすくするために、ここに私のコードがあります。

public class Froyo2Activity extends Activity{
Spinner priorSpin, genderSpin;
ImageView femaleView, maleView;
Button submit, agePrev, ageNext, bpPrev, bpNext, pPrev, pNext, butLoc;
SeekBar seekAge, seekBP;
EditText ageEdit, bpEdit, pEdit, locEdit, fname, lname; 
TextView tv;

String commandline="", ageString="", bpString="", pString="";
int age = 0, bp = 0, p = 0;
double latitude, longitude, altitude, pitch = 0;    

private static final int REQUEST_CODE = 10;
private LocationManager locationManager;
private String provider;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_froyo2);       

    fname = (EditText) findViewById(R.id.editText1);
    lname = (EditText) findViewById(R.id.editText2);
    ageEdit = (EditText) findViewById(R.id.editText7);
    pEdit = (EditText) findViewById(R.id.editText9);
    locEdit = (EditText) findViewById(R.id.editText3);
    femaleView = (ImageView)findViewById(R.id.femaleView);
    maleView = (ImageView)findViewById(R.id.maleView);
    priorSpin = (Spinner) findViewById(R.id.prior_spin);
    genderSpin = (Spinner)findViewById(R.id.gender_spin);
    tv = (TextView) findViewById(R.id.textView14);


    //---set the GPS---
    //Get the location manager
    LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
      LocationListener mlocListener = new MyLocationListener();
      mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);

      if (mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
          if(MyLocationListener.latitude>0)
          {
              latitude=MyLocationListener.latitude;
              longitude=MyLocationListener.longitude;
              tv.setText("Latitude: "+ Double.toString(latitude) +" Longitude: "+  Double.toString(longitude)+" Altitude:"+  Double.toString(pitch)+"");                        
           }
           else
           {
              tv.setText("Signal Not Available");
            }
        } else {
            tv.setText("GPS is not turned on...");              
       }
    //---end GPS---

これはMyLocationListenerのコードです

 package com.example.froyo2;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.widget.TextView;
import android.widget.Toast;

public class MyLocationListener implements LocationListener {
public static double latitude;
public static double longitude;
public static double salah=90;



@Override
public void onLocationChanged(Location loc)


   {
//        loc.getLatitude();
//        loc.getLongitude();
        latitude=loc.getLatitude();
        longitude=loc.getLongitude();
        salah=1;
}

@Override
public void onProviderDisabled(String provider)
{
    salah=2;
}

@Override
public void onProviderEnabled(String provider)
{


    salah=3;
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras)
    {
        salah=4;
    }
}

誰もがこれを解決する方法を知っていますか?私が前に言ったように、私がそれ自身のクラスでgps関数でトライアウトをしているとき; つまり、他の機能やアクティビティを実装しなくても、特にGPS機能についてのみテストされたクラスは機能します。少なくとも、場所の番号を示します。ただし、他の機能でGPSを実装すると、信号が利用できないと表示されます(コードを参照してください)。この問題が解決できれば助かります。

よろしくお願いします。(サラブラウン)

4

4 に答える 4

1

以下のコードを使用してください:

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                MINIMUM_TIME_BETWEEN_UPDATES,
                MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, locationListener);

locationListenerの場合、これを使用できます(これをFroyo2Activity内に配置します)。

LocationListener locationListener = new LocationListener() {
        public void onLocationChanged(Location location) {
            // Called when a new location is found by the GPS location
            // provider.

            String message = String.format(
                    "New Location \n Longitude: %1$s \n Latitude: %2$s",
                    location.getLongitude(), location.getLatitude());
            Toast.makeText(LbsGeocodingActivity.this, message,
                    Toast.LENGTH_LONG).show();
            // Here you can set your Value of Textview

        }

私はこれをコードで使用しましたが、非常にうまく機能します。

于 2012-11-20T09:02:34.353 に答える
0

交換する必要があると思います

if(MyLocationListener.latitude>0)

if(mlocListener.latitude>0)

それが役に立てば幸い

于 2012-11-20T08:49:37.437 に答える
-1

この行を変更します

if (mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) 

if (mlocManager.isProviderEnabled(locationManager.GPS_PROVIDER)) 

それはうまくいくでしょう

于 2012-11-20T08:22:58.733 に答える
-2

時々GPSプロバイダーは動作しません。ネットワークプロバイダーで試す

于 2012-09-18T08:10:34.350 に答える