gpt4 book ai didi

Android:如果设备位于室内,如何以编程方式识别?

转载 作者:行者123 更新时间:2023-11-29 22:22:15 25 4
gpt4 key购买 nike

Android 应用程序是否可以通过编程方式识别设备是否位于室内。如果我的应用程序在室内使用 GPS,它就会挂起。我正在使用以下代码:

package com.first.Engagia;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class LocationView extends Activity {

public String userId;
public String appview_username;
public String appview_password;
public String userfirstname;
public String userlastname;
public String companyname;
public String AudienceFirstnameLastname;

public String LocationString;

private ProgressDialog mProgressDialog;

TextView tv;
boolean fetchedLocationStatus;
LocationManager locationManager;
LocationListener locationListener;
boolean gps_enabled = false;
boolean network_enabled = false;

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


//setting passed userId
Bundle extras = getIntent().getExtras();
if(extras != null){
this.userId = extras.getString("userId");
this.appview_username = extras.getString("username");
this.appview_password = extras.getString("password");

this.userfirstname = extras.getString("userfirstname");
this.userlastname = extras.getString("userlastname");
this.companyname = extras.getString("companyname");

this.AudienceFirstnameLastname = extras.getString("AudienceFirstnameLastname");

}

//tv = (TextView) this.findViewById(R.id.thetext);
//tv.setText("Android Geo Location Snippet Here.\n\n");
//tv.setText("");

showDialog(0);
LocationView.this.mProgressDialog.setMessage("Getting your location..." );

// Acquire a reference to the system Location Manager
locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

try {
LocationView.this.gps_enabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
} catch(Exception e) {
Log.e("LocationView", e.toString());
}

try{
LocationView.this.network_enabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
} catch(Exception e) {
Log.e("LocationView", e.toString());
}


// Define a listener that responds to location updates
locationListener = new LocationListener() {

public void onStatusChanged(String provider, int status, Bundle extras) {}

public void onProviderEnabled(String provider) {}

public void onProviderDisabled(String provider) {}

public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
if( displayCoordinates(location) == true ) {
//getAddress( location.getLatitude(), location.getLongitude());
Log.d("LocationView", "Before Stop Location Updates.");
stopLocationUpdates();
}
}
};

if( LocationView.this.gps_enabled == true ){
// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
}else if( LocationView.this.network_enabled == true ){
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
}else if( LocationView.this.gps_enabled == false && LocationView.this.network_enabled == false ){
LocationUnavailable();
}

//so that the program will get the geo location once

}

public void stopLocationUpdates(){
locationManager.removeUpdates(locationListener);
}

public void LocationUnavailable(){
LocationView.this.mProgressDialog.setMessage("Location Unavailable..." );

if( LocationView.this.mProgressDialog.isShowing() ){
dismissDialog(0);
}

//go back to main_audience.html //3
Intent nextActivity = new Intent(LocationView.this, AppView.class);

nextActivity.putExtra("userId", LocationView.this.userId );
nextActivity.putExtra("username", LocationView.this.appview_username);
nextActivity.putExtra("password", LocationView.this.appview_password);

nextActivity.putExtra("userfirstname", LocationView.this.userfirstname );
nextActivity.putExtra("userlastname", LocationView.this.userlastname );
nextActivity.putExtra("companyname", LocationView.this.companyname );

nextActivity.putExtra("AudienceFirstnameLastname", LocationView.this.AudienceFirstnameLastname );

nextActivity.putExtra("latitude", "Unavailable" );
nextActivity.putExtra("longitude", "Unavailable" );

nextActivity.putExtra("origin", "LocationView" );

finish();
startActivity(nextActivity);
}

public boolean displayCoordinates(Location location){
//String txtMsg = "Latitude: " + location.getLatitude() + "\nLongitude: " + location.getLongitude();
//Toast.makeText(getBaseContext(), txtMsg, Toast.LENGTH_SHORT).show();
LocationView.this.mProgressDialog.setMessage("Location Available..." );

if( LocationView.this.mProgressDialog.isShowing() ){
dismissDialog(0);
}

//go back to main_audience.html //3
Intent nextActivity = new Intent(LocationView.this, AppView.class);

nextActivity.putExtra("userId", LocationView.this.userId );
nextActivity.putExtra("username", LocationView.this.appview_username);
nextActivity.putExtra("password", LocationView.this.appview_password);

nextActivity.putExtra("userfirstname", LocationView.this.userfirstname );
nextActivity.putExtra("userlastname", LocationView.this.userlastname );
nextActivity.putExtra("companyname", LocationView.this.companyname );

nextActivity.putExtra("AudienceFirstnameLastname", LocationView.this.AudienceFirstnameLastname );

nextActivity.putExtra("latitude", location.getLatitude() );
nextActivity.putExtra("longitude", location.getLongitude() );
nextActivity.putExtra("LocationString", LocationView.this.LocationString );

nextActivity.putExtra("origin", "LocationView" );

finish();
startActivity(nextActivity);

//this.tv.append( txtMsg );
//Toast.makeText(getBaseContext(), txtMsg, Toast.LENGTH_SHORT).show();

return true;
}




@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case 0:
mProgressDialog = new ProgressDialog(this);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
mProgressDialog.show();
return mProgressDialog;
default:
return null;
}
}

}

最佳答案

与其检查您的设备是否在室内使用,不如检查您是否可以在一定时间内收到 GPS 相关详细信息;如果不能,则向用户显示一些消息,说明此时无法访问 GPS。

关于Android:如果设备位于室内,如何以编程方式识别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6855668/

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