GVKun编程网logo

android – 如何检查wifi位置服务是否开启……?(android 判断wifi是否连接)

18

对于android–如何检查wifi位置服务是否开启……?感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解android判断wifi是否连接,并且为您提供关于AndroidGoogleMap

对于android – 如何检查wifi位置服务是否开启……?感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解android 判断wifi是否连接,并且为您提供关于Android Google Map如何检查gps位置是否在圆圈内、android – jodatime如何知道夏令时是否开启、android – Twitter数字:如何检查用户是否已注册、android – 如何在Firebase中检查写入任务是否成功的宝贵知识。

本文目录一览:

android – 如何检查wifi位置服务是否开启……?(android 判断wifi是否连接)

android – 如何检查wifi位置服务是否开启……?(android 判断wifi是否连接)

我正在使用一个使用用户位置的应用程序.

我可以成功地询问用户wifi和gps启用.
如您所知,您可以使用WiFi,但不能提供您的位置.

问题是我想要让用户启​​用wifi位置获取服务,如果它被禁用.我使用wifi管理器用于wifi和LOCATION_PROVIDERS_ALLOWED用于GPS.两者都很好用.

//provider variable code
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);



//i use the string into an if statement
if (!provider.contains("gps")){ 

}

我明白我可以将启用的提供程序转换为用逗号分隔的变量.
它工作得很好..但“gps”是GPS的名称,但是WiFi的名称是什么?

解决方法:

有两个提供商.一个是GPS,另一个叫网络,包括Wifi和手机信号塔.

因此,如果两个提供程序都已启用,则您获得的响应是​​network,gps

Android Google Map如何检查gps位置是否在圆圈内

Android Google Map如何检查gps位置是否在圆圈内

我正在尝试使用用户gps位置来检测用户是否位于标记的半径.我有标记的坐标,但我不知道如何计算用户是否在该区域.我试图使用以下内容,但即使当前位置在圈子内,我仍然会收到“外部”消息.
public class MapaEscola extends FragmentActivity {

    private GoogleMap googleMap;
    private Serializable escolas;
    private ProgressDialog dialog;
    private Circle mCircle;
    private Marker mMarker;



    @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getActionBar().setdisplayHomeAsUpEnabled(true);
        getActionBar().setHomeButtonEnabled(true);

        setContentView(R.layout.maps);

        // Loading map
        initilizeMap();

        // Changing map type
        googleMap.setMapType(GoogleMap.MAP_TYPE_norMAL);

        // Showing / hiding your current location
        googleMap.setMyLocationEnabled(true);

        // Enable / disable zooming controls
        googleMap.getUiSettings().setZoomControlsEnabled(true);

        // Enable / disable my location button
        googleMap.getUiSettings().setMyLocationButtonEnabled(true);

        // Enable / disable Compass icon
        googleMap.getUiSettings().setCompassEnabled(true);

        // Enable / disable Rotate gesture
        googleMap.getUiSettings().setRotateGesturesEnabled(true);

        // Enable / disable zooming functionality
        googleMap.getUiSettings().setZoomGesturesEnabled(true);

        Bundle extra = getIntent().getBundleExtra("extra");
        ArrayList<Escolas> objects = (ArrayList<Escolas>) extra.getSerializable("array");


        try {

            for(int i = 0; i < objects.size(); i ++) {
                System.out.println(" escolas " + objects.get(i).getLatitude() + " " + objects.get(i).getLongitude());

                float latitude = objects.get(i).getLatitude();
                float longitude = objects.get(i).getLongitude();

                googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(-23.316281,-51.155528),15));

                MarkerOptions options = new MarkerOptions();

                // Setting the position of the marker

                options.position(new LatLng(latitude,longitude));

                googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

                LatLng latLng = new LatLng(latitude,longitude);
                drawMarkerWithCircle(latLng);


                googleMap.setonMyLocationchangelistener(new GoogleMap.OnMyLocationchangelistener() {
                    @Override
                    public void onMyLocationChange(Location location) {
                        float[] distance = new float[2];

                        Location.distanceBetween( mMarker.getPosition().latitude,mMarker.getPosition().longitude,mCircle.getCenter().latitude,mCircle.getCenter().longitude,distance);

                        if( distance[0] > (mCircle.geTradius() / 2)  ){
                            Toast.makeText(getBaseContext(),"Outside",Toast.LENGTH_LONG).show();
                        } else {
                            Toast.makeText(getBaseContext(),"Inside",Toast.LENGTH_LONG).show();
                        }

                    }
                });




            }



        } catch (Exception e) {
            e.printstacktrace();
        }
    }


    private void drawMarkerWithCircle(LatLng position){
        double radiusInMeters = 500.0;
        int strokeColor = 0xffff0000; //red outline
        int shadeColor = 0x44ff0000; //opaque red fill

        CircleOptions circleOptions = new CircleOptions().center(position).radius(radiusInMeters).fillColor(shadeColor).strokeColor(strokeColor).strokeWidth(8);
        mCircle = googleMap.addCircle(circleOptions);

        MarkerOptions markerOptions = new MarkerOptions().position(position);
        mMarker = googleMap.addMarker(markerOptions);
    }



    private void initilizeMap() {

        if (googleMap == null) {
            googleMap = ((MapFragment) getFragmentManager().findFragmentById(
                    R.id.map)).getMap();

            // check if map is created successfully or not
            if (googleMap == null) {
                Toast.makeText(getApplicationContext(),"Não foi possível carregar o mapa",Toast.LENGTH_SHORT)
                        .show();
            }
        }
    }

    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    @Override
    public void onBackpressed() {

        super.onBackpressed();
        finish();

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Todo Auto-generated method stub
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_main,menu);

        return super.onCreateOptionsMenu(menu);
    }

    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    public boolean onoptionsItemSelected(MenuItem item) {


        switch (item.getItemId()) {

            case android.R.id.home:
                super.onBackpressed();
                finish();

                return true;


        }

        return true;

    }

    @Override
    protected void onResume() {
        super.onResume();
        initilizeMap();
    }


}

解决方法

我刚刚运行更新的代码,并找出主要问题是什么.

您应该使用传入onMyLocationChange()回调的位置,以便它使用您当前的位置来判断设备是否在圆圈内:

googleMap.setonMyLocationchangelistener(new GoogleMap.OnMyLocationchangelistener() {
                @Override
                public void onMyLocationChange(Location location) {
                    float[] distance = new float[2];

                    /*
                    Location.distanceBetween( mMarker.getPosition().latitude,distance);
                            */

                    Location.distanceBetween( location.getLatitude(),location.getLongitude(),distance);

                    if( distance[0] > mCircle.geTradius() ){
                        Toast.makeText(getBaseContext(),"Outside,distance from center: " + distance[0] + " radius: " + mCircle.geTradius(),Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(getBaseContext(),"Inside,Toast.LENGTH_LONG).show();
                    }

                }
            });

以下是我运行的全部工作示例,它是您的原始代码的缩减版本:

public class MainActivity extends ActionBaractivity {

    private GoogleMap googleMap;
    private Serializable escolas;
    private ProgressDialog dialog;
    private Circle mCircle;
    private Marker mMarker;



    @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getSupportActionBar().setdisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);

        setContentView(R.layout.activity_main);

        // Loading map
        initilizeMap();

        // Changing map type
        googleMap.setMapType(GoogleMap.MAP_TYPE_norMAL);

        // Showing / hiding your current location
        googleMap.setMyLocationEnabled(true);

        // Enable / disable zooming controls
        googleMap.getUiSettings().setZoomControlsEnabled(true);

        // Enable / disable my location button
        googleMap.getUiSettings().setMyLocationButtonEnabled(true);

        // Enable / disable Compass icon
        googleMap.getUiSettings().setCompassEnabled(true);

        // Enable / disable Rotate gesture
        googleMap.getUiSettings().setRotateGesturesEnabled(true);

        // Enable / disable zooming functionality
        googleMap.getUiSettings().setZoomGesturesEnabled(true);

       // Bundle extra = getIntent().getBundleExtra("extra");
        //ArrayList<Escolas> objects = (ArrayList<Escolas>) extra.getSerializable("array");


        try {
               //test outside
               double mLatitude = 37.77657;
               double mLongitude = -122.417506;


                //test inside
                //double mLatitude = 37.7795516;
                //double mLongitude = -122.39292;


                googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(mLatitude,mLongitude),15));

                MarkerOptions options = new MarkerOptions();

                // Setting the position of the marker

                options.position(new LatLng(mLatitude,mLongitude));

                //googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

                LatLng latLng = new LatLng(mLatitude,mLongitude);
                drawMarkerWithCircle(latLng);


                googleMap.setonMyLocationchangelistener(new GoogleMap.OnMyLocationchangelistener() {
                    @Override
                    public void onMyLocationChange(Location location) {
                        float[] distance = new float[2];

                        /*
                        Location.distanceBetween( mMarker.getPosition().latitude,distance);
                                */

                        Location.distanceBetween( location.getLatitude(),distance);

                        if( distance[0] > mCircle.geTradius()  ){
                            Toast.makeText(getBaseContext(),Toast.LENGTH_LONG).show();
                        }

                    }
                });




        } catch (Exception e) {
            e.printstacktrace();
        }
    }


    private void drawMarkerWithCircle(LatLng position){
        double radiusInMeters = 500.0;
        int strokeColor = 0xffff0000; //red outline
        int shadeColor = 0x44ff0000; //opaque red fill

        CircleOptions circleOptions = new CircleOptions().center(position).radius(radiusInMeters).fillColor(shadeColor).strokeColor(strokeColor).strokeWidth(8);
        mCircle = googleMap.addCircle(circleOptions);

        MarkerOptions markerOptions = new MarkerOptions().position(position);
        mMarker = googleMap.addMarker(markerOptions);
    }



    private void initilizeMap() {

        if (googleMap == null) {
            googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(
                    R.id.map)).getMap();

            // check if map is created successfully or not
            if (googleMap == null) {
                Toast.makeText(getApplicationContext(),menu);

        return super.onCreateOptionsMenu(menu);
    }

    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    public boolean onoptionsItemSelected(MenuItem item) {


        switch (item.getItemId()) {

            case android.R.id.home:
                super.onBackpressed();
                finish();

                return true;


        }

        return true;

    }

    @Override
    protected void onResume() {
        super.onResume();
        initilizeMap();
    }


}

圈内结果:

圆圈外的结果:

android – jodatime如何知道夏令时是否开启

android – jodatime如何知道夏令时是否开启

我有一个需要时区的API.例如如果我在加利福尼亚州,当夏令时(加利福尼亚,PDT是GMT-7),而在夏令时关闭时,我需要通过-7.但是,我无法弄明白当前的日期是否开启或关闭夏令时.
Date date1 = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date1);
double[] coords = db.getCoords(id1);
double latitude = coords[0];
double longitude = coords[1];
double timezone = -7; /* For Pacific daylight time (GMT - 7)*/

ArrayList<String> Times = Class.foo(cal,latitude,longitude,timezone);

我已经安装了JodaTime,甚至在那里我找不到方法.请建议如果本机java或jodatime,或者有办法这样做.

解决方法

当您使用JodaTime创建DateTime时,您不需要传递偏移量.相反,通过时区.它将负责确定正确的偏移量,包括对DST的考虑.
// First get a DateTimeZone using the zone name
DateTimeZone zone = DateTimeZone.forID("America/Los_Angeles");

// Then get the current time in that zone.
DateTime dt = new DateTime(zone);

// Or if you prefer to be more explicit,this Syntax is equivalent.
DateTime dt = DateTime.Now(zone);

UPDATE

我仍然不确定你在问什么,但也许你正在寻找其中之一:

// To get the current Pacific Time offset
DateTimeZone zone = DateTimeZone.forID("America/Los_Angeles");
int currentOffsetMilliseconds = zone.getoffset(Instant.Now());
int currentOffsetHours = currentOffsetMilliseconds / (60 * 60 * 1000);


// To just determine if it is currently DST in Pacific Time or not.
DateTimeZone zone = DateTimeZone.forID("America/Los_Angeles");
boolean isstandardOffset = zone.isstandardOffset(Instant.Now());
boolean isDaylightOfset = !isstandardOffset;

android – Twitter数字:如何检查用户是否已注册

android – Twitter数字:如何检查用户是否已注册

我正在通过Twitter试验 Digits API,以便在我的Android应用程序上注册用户.目前在我的启动活动中,我显示了一个按钮(com.digits.sdk.android.DigitsAuthButton),要求用户输入他们的电话号码,以便发送确认码.一旦他们输入确认码并进行身份验证,我就会在回调方法中收到user_id.

现在,下次如果我点击启动活动中的相同按钮,它不会显示输入电话号码的选项,只返回已经注册的相同user_id.

我想在我的Java代码中复制同样的东西,而无需额外点击com.digits.sdk.android.DigitsAuthButton按钮.我查看了一些示例,他们使用以下语句来验证相同的内容:

if (Digits.getSessionManager().getActiveSession() != null) { ... }

这是否足够或者我应该使用sharedPreference来存储返回的user_id和电话号码吗?

解决方法

更新

我个人使用共享偏好它对我来说很好..

至于处理“稍后更改电话号码”,您可以创建一个注销按钮,将首选项从true转为false.

要么

你可以查看电话号码的变化:

TelephonyManager tMgr =     (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();

//required Permission:

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

android – 如何在Firebase中检查写入任务是否成功

android – 如何在Firebase中检查写入任务是否成功

我是Firebase的新手,需要知道如何检查我的写作任务是否成功,因为如果不这样做,MainActivity会启动并且会影响我的注册进度.

这将检查是否已采用Username,如果不是,则注册用户:

Query usernamequery = myRef.orderByChild("Username").equalTo(Username);

usernamequery.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        if (snapshot.exists()) {
            // Todo: handle the case where the data already exists
            editText.setError("Username taken!");
            return;
        }
        else {
            // Todo: handle the case where the data does not yet exist
            myRef.child("Users").child(Username).child("Userid").setValue(user.getUid());
            myRef.child("Users").child(Username).child("Username").setValue(Username);
            startActivity(maps);
            finish();
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Toast.makeText(Username.this,"Error",Toast.LENGTH_LONG).show();
    }
});

但我希望只有在激活时才会触发Intent to Main Activity(地图)
.myRef.child( “用户”)孩子(用户名).child( “用户ID”)的setValue(user.getUid()).

另一个完成任务并取得成功.

我能做什么?

解决方法

要知道写操作何时完成,请添加完成侦听器:
myRef.child("Users").child(Username).child("Userid").setValue(user.getUid(),new DatabaseReference.CompletionListener() {
    void onComplete(DatabaseError error,DatabaseReference ref) {
        System.out.println("Value was set. Error = "+error);
    }
});

如果要通过单个操作写入多个位置,则需要查看update()方法:https://firebase.google.com/docs/database/android/read-and-write#updating_or_deleting_data

这里记录了setValue()的正确重载:https://firebase.google.com/docs/reference/android/com/google/firebase/database/DatabaseReference.html#setValue(java.lang.Object,%20com.google.firebase.database.DatabaseReference.CompletionListener)

今天关于android – 如何检查wifi位置服务是否开启……?android 判断wifi是否连接的分享就到这里,希望大家有所收获,若想了解更多关于Android Google Map如何检查gps位置是否在圆圈内、android – jodatime如何知道夏令时是否开启、android – Twitter数字:如何检查用户是否已注册、android – 如何在Firebase中检查写入任务是否成功等相关知识,可以在本站进行查询。

本文标签: