如何检查 LocationManager.NETWORK_PROVIDER 是否可用?

如何检查 LocationManager.NETWORK_PROVIDER 是否可用?我在 AndroidManifest.xml 里面配置了,但是需要在代码里检查一下使用 GPS_PROVIDER 是否可行。如何检查?请大家指点迷津。

2个回答

LocationManager lm = (LocationManager) this.getSystemService(LOCATION_SERVICE);
lm.isProviderEnabled(aLocationManager.GPS_PROVIDER);
lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

使用 Network provider 或者 GPS provider 来获取

private Location getLocation() {            
        Location gpslocation = null;
        Location networkLocation = null;

        if(locMan==null){
          locMan = (LocationManager) getApplicationContext() .getSystemService(Context.LOCATION_SERVICE);
        }
        try {
            if(locMan.isProviderEnabled(LocationManager.GPS_PROVIDER)){
                locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000, 1, gpsListener);
                gpslocation = locMan.getLastKnownLocation(LocationManager.GPS_PROVIDER);

            }
            if(locMan.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
                locMan.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000, 1, gpsListener);
                networkLocation = locMan.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
            }
        } catch (IllegalArgumentException e) {
            //Log.e(ErrorCode.ILLEGALARGUMENTERROR, e.toString());
            Log.e("error", e.toString());
        }
        if(gpslocation==null && networkLocation==null)
            return null;

        if(gpslocation!=null && networkLocation!=null){
            if(gpslocation.getTime() < networkLocation.getTime()){
                gpslocation = null;
                return networkLocation;
            }else{
                networkLocation = null;
                return gpslocation;
            }
        }
        if (gpslocation == null) {
            return networkLocation;
        }
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
不能从 NETWORK_PROVIDER获得 gps坐标

我要从 NETWORK_PROVIDER中获得gps坐标,用的以下的代码实现这个功能。 LocationListener mlocListener = new MyLocationListener(); mlocManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener); //init(); } /* Class My Location Listener */ public class MyLocationListener implements LocationListener { @Override public void onLocationChanged(Location loc) { //_pd.dismiss(); loc.getLatitude(); loc.getLongitude(); String Text = "My current location is: " +"Latitud = " + loc.getLatitude() +"Longitud =" + loc.getLongitude(); txtInfo.setText(Text); Toast.makeText( getApplicationContext(),Text,Toast.LENGTH_SHORT).show(); } @Override public void onProviderDisabled(String provider) { Toast.makeText( getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT ).show(); } @Override public void onProviderEnabled(String provider) { Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show(); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } } 但是,使用上面的方法有时候能获得gps坐标,有时候又获取不了,为什么呢?

android 定位 getProviders(true) null

设备是nexus 5x getprovidrs等于空 locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 获取所有可用的位置提供器 List<String> providerList = locationManager.getProviders(true); if (providerList.contains(LocationManager.GPS_PROVIDER)) { provider = LocationManager.GPS_PROVIDER; } else if (providerList.contains(LocationManager.NETWORK_PROVIDER)) { provider = LocationManager.NETWORK_PROVIDER; } else { // 当没有可用的位置提供器时,弹出Toast提示用户 Toast.makeText(this, "No location provider to use", Toast.LENGTH_SHORT).show(); return; } ``` ```

无法找到可用的位置提供器

//获取地理位置管理器 locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //获取所有可用的位置提供器 List<String> providers = locationManager.getProviders(true); if (providers.contains(LocationManager.GPS_PROVIDER)) { //如果是GPS locationProvider = LocationManager.GPS_PROVIDER; } else if (providers.contains(LocationManager.NETWORK_PROVIDER)) { //如果是Network locationProvider = LocationManager.NETWORK_PROVIDER; } else { Toast.makeText(this, "没有可用的位置提供器", Toast.LENGTH_SHORT).show(); return; } 我代码里是这样写的,运行测试红米note2、3手机没有问题可以得到locationProvider,但是华为 和小米3 就没有可用的位置提供器,这是为什么?求助!!!

Android 的定位问题,location

运行之后手机应用里一片空白,并没有显示设定的TextView,这是为啥 public class MainActivity extends AppCompatActivity { private TextView positionTextView; private LocationManager locationManager; private String provider; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); positionTextView=(TextView)findViewById(R.id.position_text_view); locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE); //获取所有可用的位置提供器 List<String> providerList=locationManager.getProviders(true); if (providerList.contains(LocationManager.GPS_PROVIDER)){ provider=LocationManager.GPS_PROVIDER; }else if (providerList.contains(LocationManager.NETWORK_PROVIDER)){ provider=LocationManager.NETWORK_PROVIDER; }else { //当前没有可用的位置提供器时,弹出Toast提示用户 Toast.makeText(this,"No location provider to use", Toast.LENGTH_SHORT).show(); return; } Location location=locationManager.getLastKnownLocation(provider); if (location!=null){ //显示当前设备的位置信息 showLocation(location); } locationManager.requestLocationUpdates(provider,5000,1,locationListener); } protected void onDestroy(){ super.onDestroy(); if (locationManager!=null){ //关闭程序时将监听器移除 locationManager.removeUpdates(locationListener); } } LocationListener locationListener=new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onLocationChanged(Location location) { //更新设备当前的位置信息 showLocation(location); } }; private void showLocation(Location location){ String currentPosition="latitude is "+ location.getLatitude()+"\n"+"longitude is "+location.getLongitude(); positionTextView.setText(currentPosition); } }

Android获取当前位置,location为空

MainActivity.java: public class MainActivity extends Activity { LocationManager locationManager ; String provider; TextView location_msg; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); location_msg = (TextView) findViewById(R.id.location_msg); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); List<String> providerList = locationManager.getProviders(true); if(providerList.contains(LocationManager.GPS_PROVIDER)) { provider = LocationManager.GPS_PROVIDER; } else if(providerList.contains(LocationManager.NETWORK_PROVIDER)) { provider = LocationManager.NETWORK_PROVIDER; } else { Toast.makeText(MainActivity.this, "here are no useful location service", 1000).show(); return; } Location location = locationManager.getLastKnownLocation(provider); if(location!=null) { Log.i(">>>>>>>MainActivity", "显示位置信息,信息呢?"); showLocation(location); } else { Log.i(">>>>>>>MainActivity", "信息显示为空。。。。。。"); } locationManager.requestLocationUpdates(provider, 5000, 1, listener); } private void showLocation(Location location) { String position = "latitude is " + location.getLatitude() + "\n" + "longitude is " + location.getLongitude(); location_msg.setText("HELLO WORLD"); location_msg.setTextColor(Color.BLUE); //Log.i(">>>>>>>MainActivity", "显示位置信息,信息呢?"); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if(locationManager!=null) { locationManager.removeUpdates(listener); } } LocationListener listener = new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onLocationChanged(Location location) { showLocation(location); } }; } 布局文件为:一个TextView显示地理位置:经度和纬度 AndroidManifest.xml文件添加访问位置权限: <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> ``` ```

界面一片空白,连toast都不显示

界面一片空白,显示不出自己所在的经纬度,连toast都不显示 ``` public class MainActivity extends Activity { public static final int SHOW_LOCATION = 0; private TextView positionTextView; private LocationManager locationManager; private String provider; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); positionTextView = (TextView) findViewById(R.id.position_text_view); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 获取所有可用的位置提供器 List<String> providerList = locationManager.getProviders(true); if (providerList.contains(LocationManager.GPS_PROVIDER)) { provider = LocationManager.GPS_PROVIDER; } else if (providerList.contains(LocationManager.NETWORK_PROVIDER)) { provider = LocationManager.NETWORK_PROVIDER; } else { // 当没有可用的位置提供器时,弹出Toast提示用户 Toast.makeText(this, "没有可用的位置提供器", Toast.LENGTH_SHORT).show(); return; } Location location = locationManager.getLastKnownLocation(provider); if (location != null) { // 显示当前设备的位置信息 showLocation(location); } locationManager.requestLocationUpdates(provider, 5000, 1, locationListener); } protected void onDestroy() { super.onDestroy(); if (locationManager != null) { // 关闭程序时将监听器移除 locationManager.removeUpdates(locationListener); } } LocationListener locationListener = new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onLocationChanged(Location location) { // 更新当前设备的位置信息 showLocation(location); } }; private void showLocation(Location location) { String currentPosition="纬度"+location.getLatitude()+"\n"+"经度"+location.getLongitude(); positionTextView.setText(currentPosition); } } ```

关于Android获取GPS位置问题

各位大佬,我是大二学生。最近在看《第一行代码(第一版)》时,看到GPS定位时按着书上代码打的,但是却显示工程发生错误,检查了一下代码,未能发现错误。特此求助。 注明:已在AndroidMainFest中声明网络权限和位置权限。![图片说明](https://img-ask.csdn.net/upload/201701/24/1485228550_667497.png) package com.example.school_pet; import java.util.List; import android.app.Activity; import android.content.Context; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; public class test_location extends Activity{ private TextView positionTextView; private LocationManager locationManager; private String provider; protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.location_test); positionTextView=(TextView)findViewById(R.id.show_location); locationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE); //获取所有可用的位置提供器 List<String>providerList=locationManager.getProviders(true); if(providerList.contains(LocationManager.GPS_PROVIDER)){ provider=LocationManager.GPS_PROVIDER; }else if(providerList.contains(LocationManager.NETWORK_PROVIDER)){ provider=LocationManager.NETWORK_PROVIDER; }else { Toast.makeText(this, "No location provider to use.",Toast.LENGTH_SHORT).show(); return; } Location location=locationManager.getLastKnownLocation(provider); if(location !=null) {showLocation(location);} locationManager.requestLocationUpdates(provider, 5000, 1, locationListener); } protected void onDestroy(){ super.onDestroy(); if(locationManager!=null){ locationManager.removeUpdates(locationListener); } } LocationListener 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){ showLocation(location); } }; private void showLocation(Location location){ String currentPosition="latitude is"+location.getLatitude()+"\n"+"longitude is "+location.getLongitude(); positionTextView.setText(currentPosition); } }

location始终为null,想让它不为空

为什么location始终为null,怎么样让location不为空? ``` public class MainActivity extends Activity { public static final int SHOW_LOCATION = 0; private TextView positionTextView; private LocationManager locationManager; private String provider; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); positionTextView = (TextView) findViewById(R.id.position_text_view); Toast.makeText(getApplication(), "测试1", Toast.LENGTH_LONG).show(); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 获取所有可用的位置提供器 List<String> providerList = locationManager.getProviders(true); if (providerList.contains(LocationManager.GPS_PROVIDER)) { provider = LocationManager.GPS_PROVIDER; Toast.makeText(getApplication(), "测试4", Toast.LENGTH_LONG).show(); } else if (providerList.contains(LocationManager.NETWORK_PROVIDER)) { provider = LocationManager.NETWORK_PROVIDER; Toast.makeText(getApplication(), "测试5", Toast.LENGTH_LONG).show(); } else { // 当没有可用的位置提供器时,弹出Toast提示用户 Toast.makeText(getApplication(), "没有可用的位置提供器", Toast.LENGTH_LONG).show(); return; } Toast.makeText(getApplication(), "测试2", Toast.LENGTH_LONG).show(); Location location = locationManager.getLastKnownLocation(provider); if (location != null) { // 显示当前设备的位置信息 showLocation(location); } else { Toast.makeText(getApplication(), "测试3", Toast.LENGTH_LONG).show(); } locationManager.requestLocationUpdates(provider, 5000, 1, locationListener); } protected void onDestroy() { super.onDestroy(); if (locationManager != null) { // 关闭程序时将监听器移除 locationManager.removeUpdates(locationListener); } } LocationListener locationListener = new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onLocationChanged(Location location) { // 更新当前设备的位置信息 showLocation(location); } }; public void showLocation(Location location) { String currentPosition="纬度"+location.getLatitude()+"\n"+"经度"+location.getLongitude(); positionTextView.setText(currentPosition); } } ``` ![图片说明](https://img-ask.csdn.net/upload/201802/23/1519388946_441384.png) ![图片说明](https://img-ask.csdn.net/upload/201802/23/1519388977_214950.png)

检测GPS或者网络是否可用

需要检测GPS或者WiFi或者手机网络是否可用,我当前的代码可以检测出GPS。但是检测网络时就报错: The method isProviderEnabled(String) in the type LocationManager is not applicable for the arguments (String, String) 代码: if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER, LocationManager.NETWORK_PROVIDER)){ Toast.makeText(this, "GPS is Enabled in your device", Toast.LENGTH_SHORT).show(); }else{ displayAlert(); }

《第一行代码》11.2.2确定自己位置的经纬度 为什么我的跟书上的一模一样却不显示经纬度?

package com.example.administrator.locationmanager; import android.app.Activity; import android.content.Context; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; import java.util.List; public class MainActivity extends Activity { private TextView positionTextView; private LocationManager locationManager; private String provider; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); positionTextView = (TextView) findViewById(R.id.position_text_view); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 获取所有可用的位置提供器 List<String> providerList = locationManager.getProviders(true); if (providerList.contains(LocationManager.GPS_PROVIDER)) { provider = LocationManager.GPS_PROVIDER; } else if (providerList.contains(LocationManager.NETWORK_PROVIDER)) { provider = LocationManager.NETWORK_PROVIDER; } else { // 当没有可用的位置提供器时,弹出Toast提示用户 Toast.makeText(this, "No location provider to use", Toast.LENGTH_SHORT).show(); return; } Location location = locationManager.getLastKnownLocation(provider); if (location != null) { // 显示当前设备的位置信息 showLocation(location); } locationManager.requestLocationUpdates(provider,5000,1,locationListener); } protected void onDestroy() { super.onDestroy(); if (locationManager != null) { // 关闭程序时将监听器移除 locationManager.removeUpdates(locationListener); } } LocationListener locationListener = new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onLocationChanged(Location location) { // 更新当前设备的位置信息 showLocation(location); } }; private void showLocation(Location location) { String currentPosition = "latitude is " + location.getLatitude() + "\n" + "longitude is " + location.getLongitude(); positionTextView.setText(currentPosition); } } 权限代码: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.administrator.locationmanager"> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> activity_main的代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/position_text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>

各位大神,求助!关于安卓的线程.发送数据的按钮每次只能按一次,按第二次程序就崩溃,求解!

代码如下,中间有一段GPS取位置的可以不用在意,注意问题就是我按发送按钮就会发送信息,但是再按一次程序就会崩溃,求帮忙!谢谢! package com.example.zhb.wifi3; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.Writer; import java.net.Socket; import java.io.OutputStream; import android.os.Bundle; import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.view.View.OnClickListener; public class MainActivity extends AppCompatActivity { private Button sbutton = null; private Button getlocation = null; private TextView locations = null; private double latitude; private double longitude; public Thread t=new Thread(new MyThread()); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); //setSupportActionBar(toolbar); sbutton = (Button)findViewById(R.id.Button01); getlocation = (Button)findViewById(R.id.Button02); locations = (TextView)findViewById(R.id.textView); getlocation.setOnClickListener(new OnClickListener() { public void onClick(View v) { getLocation(); } }); sbutton.setOnClickListener(new OnClickListener() { public void onClick(View v) { t.start(); } }); } public void getLocation(){ LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){ try{Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if(location != null){ latitude = location.getLatitude(); longitude = location.getLongitude(); } } catch(SecurityException e){} }else{ LocationListener locationListener = new LocationListener() { // Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数 @Override public void onStatusChanged(String provider, int status, Bundle extras) { } // Provider被enable时触发此函数,比如GPS被打开 @Override public void onProviderEnabled(String provider) { } // Provider被disable时触发此函数,比如GPS被关闭 @Override public void onProviderDisabled(String provider) { } //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发 @Override public void onLocationChanged(Location location) { if (location != null) { Log.e("Map", "Location changed : Lat: " + location.getLatitude() + " Lng: " + location.getLongitude()); } } }; try{Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000, 0,locationListener); if(location != null){ latitude = location.getLatitude(); //经度 longitude = location.getLongitude(); //纬度 } } catch(SecurityException e){} } locations.setText("当前经纬度:"+latitude+";"+longitude); } public class MyThread implements Runnable { @Override public void run() { // TODO Auto-generated method stub try{ //建立连接到远程服务器的Socket Socket socket=new Socket("192.168.1.218",8080); //OutputStream os = socket.getOutputStream(); String a=String.valueOf(latitude); String b=String.valueOf(longitude); Writer writer=new OutputStreamWriter(socket.getOutputStream()); writer.write("latitude:"+a+" longitude:"+b+"\n"); writer.flush(); writer.close(); socket.close(); }catch(IOException e){ System.out.println("出错了"); } } } } ``` ```

android 6.0之后锁屏一段时间搜索不到beacon设备

最近做一款beacon相关的应用,我知道6.0之后搜索ble设备需要动态申请权限。我在activity申请权限的代码如下 @Override protected void onResume() { super.onResume(); Log.e("ScanActivity", "onResume方法"); //判断 当前android版本大于6.0 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (this.checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { Log.e("onResume","申请权限"); requestPermissions(new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION); }else { startBeaconService(); } }else { startBeaconService(); } } //判断网络是否可用 public boolean isGpsEnable(final Context context) { LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); boolean network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (gps || network) { return true; } Toast.makeText(getApplicationContext(), "网络不可用",Toast.LENGTH_SHORT).show(); return false; } //回调权限 @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case PERMISSION_REQUEST_COARSE_LOCATION: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { if (!isGpsEnable(this)){ Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivityForResult(intent,100); }else { ScanActivity.this.finish(); Intent startIntent = new Intent(this, ScanActivity.class); startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(startIntent); startBeaconService(); } } else { super.onRequestPermissionsResult(requestCode, permissions, grantResults); } break; } } ``` ``` 在使用该应用时可以正常搜索到beacon设备,但离开应用或者锁屏一段时间后,有的手机就开始搜索不到设备了,比如小米锁屏一分多钟后无法搜索到设备,点开屏幕再次聚焦到屏幕可以继续搜索。但华为、oppo之类的再次聚焦也不行,我关闭了搜索设备的activity和服务重新点开也不行,,,就是要把应用kill掉之后再打开应用才能再次搜索到设备。。。。 搜索设备的代码一直在跑,但检测不到beacon设备,因为6.0之后ACCESS_COARSE_LOCATION权限才能搜索到设备,而ACCESS_COARSE_LOCATION权限属于比较危险的权限,我猜测申请到这个权限然后是在离开应用一段时间后这个权限被系统收回去了所以无法搜索到设备。 有没有什么办法让这个权限不被系统收回?或者收回后如何再次申请又不会让用户有所感知,就是能到达持续搜索到设备的效果就好。我试过在连续几次搜索到的设备都是空的时候就开启1像素的activity在这里重新申请权限,但这个方法对小米有用,对华为没有用。

LocationManager getProvers(boolean enabledOnly)方法

利用LocationManager类中的getProvers(boolean enabledOnly)方法获取所有可用的LocationProvider时:当关闭gps时,只获取到passive 当打开gps时,测试机上会得到passive,gps,network三个 LocationProvider; 但是当用我的华为荣耀4c在打开gps的情况下,只有passive,gps两个LocationProvider,不知道是什么原因,感觉比较郁闷,希望大神们给予解释。

“构造一个虚拟位置信息给谷歌地图,让其定位错误”失败

用以下代码“构造一个虚拟位置信息给谷歌地图,让其定位错误”无法实现,给位大神指点迷津,小弟开始研究Android编程不久,有点小白望谅解 正常情况下是:在本应用横纵有一个数据库,记录用户对不同需要获取位置信息的应用按精确度进行分类,分别为城镇级,精确级,街道级,不同级别对应的位置模糊程度不同,虚构的位置信息也不同 代码如下: package com.example.hermit; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Random; import android.app.ActivityManager; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; import android.content.ComponentName; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.database.Cursor; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Binder; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.util.Log; import android.widget.Toast; public class service extends Service { LocationManager locationManager; private PackageManager pm;// Package Manager(包管理)-用来找到关于安装在设备上的应用程序包的相关信息。 private ArrayList<String> default1 = new ArrayList<String>();// 城镇;创建default1来保存字符串数组 private ArrayList<String> default2 = new ArrayList<String>();// 街道;创建default2来保存字符串数组 private ArrayList<String> default3 = new ArrayList<String>();// 精准;创建default3来保存字符串数组 private ArrayList<String> user1 = new ArrayList<String>();// 城镇 private ArrayList<String> user2 = new ArrayList<String>();// 街道 private ArrayList<String> user3 = new ArrayList<String>();// 精准 private Strategy_DB DB = new Strategy_DB(this); double test1; private String mocLocationProvider; private String currentProvider; private String Provider; // Android的location定义新的变量 private Location currentLocation; Location LOCtmp; Location Location; Location Loc; Location l; // 精确 double latitude;// 经度 double longitude;// 纬度 // 城镇 double latitude1; double longitude1; // 街道 double latitude2; double longitude2; double ltd_tmp; double lng_tmp; private String AN; private String TAG = "service"; static final int DELAY = 4000; // 相当于定义常量DELAY String name; int flag = 0; static final String ACTION_FOREGROUND = "com.example.android.apis.FOREGROUND"; static final String ACTION_BACKGROUND = "com.example.android.apis.BACKGROUND"; private final IBinder mBinder = new localBinder(); /* * Handler在android里负责发送和处理消息。它的主要用途有:   1)按计划发送消息或执行某个Runnanble(使用POST方法); *   2)从其他线程中发送来的消息放入消息队列中,避免线程冲突(常见于更新UI线程)/用来向不属于自己的线程的队列中加入某个动作 */ Handler handler; Runnable runnable; private static final Class<?>[] mSetForegroundSignature = new Class[] { boolean.class }; private static final Class<?>[] mStartForegroundSignature = new Class[] { int.class, Notification.class }; private static final Class<?>[] mStopForegroundSignature = new Class[] { boolean.class }; private NotificationManager mNM; private Method mSetForeground; private Method mStartForeground; private Method mStopForeground; private Object[] mSetForegroundArgs = new Object[1]; private Object[] mStartForegroundArgs = new Object[2]; private Object[] mStopForegroundArgs = new Object[1]; /* *  可以看出,对于一个对象的方法调用来说,如果这个方法能够被分派出去, * 如上面的“hello”方法,可以在InvokeTestor1类中找到,就被分派给InvokeTestor1类的“hello”方法; * 如果不能被分派,如上面的“foo”方法,则调用“invokeMethod”方法 */ void invokeMethod(Method method, Object[] args) { try { method.invoke(this, args); } catch (InvocationTargetException e) { // Should not happen. Log.w("ApiDemos", "Unable to invoke method", e); } catch (IllegalAccessException e) { // Should not happen. Log.w("ApiDemos", "Unable to invoke method", e); } } /** * This is a wrapper around the new startForeground method, using the older * APIs if it is not available. */ void startForegroundCompat(int id, Notification notification) { // If we have the new startForeground API, then use it. if (mStartForeground != null) { mStartForegroundArgs[0] = Integer.valueOf(id); mStartForegroundArgs[1] = notification; Log.d(TAG, "Updater running"); invokeMethod(mStartForeground, mStartForegroundArgs); return; } // Fall back on the old API. mSetForegroundArgs[0] = Boolean.TRUE; Log.d(TAG, "Updater sdsf"); invokeMethod(mSetForeground, mSetForegroundArgs); mNM.notify(id, notification); } /** * This is a wrapper around the new stopForeground method, using the older * APIs if it is not available. */ void stopForegroundCompat(int id) { // If we have the new stopForeground API, then use it. if (mStopForeground != null) { mStopForegroundArgs[0] = Boolean.TRUE; invokeMethod(mStopForeground, mStopForegroundArgs); return; } // Fall back on the old API. Note to cancel BEFORE changing the // foreground state, since we could be killed at that point. mNM.cancel(id); mSetForegroundArgs[0] = Boolean.FALSE; invokeMethod(mSetForeground, mSetForegroundArgs); } public class localBinder extends Binder { service getService() { return service.this; } } @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub Log.i(TAG, "this is on binder"); return null; } public void OnCreate() { // 获得系统级的服务Notification Manager,调用getSystemService()方法实现 mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); // 为了兼容Android1的代码。即如果mStartForeground / mStopForeground // 为空就表示是Android1的环境。 try { mStartForeground = getClass().getMethod("startForeground", mStartForegroundSignature); mStopForeground = getClass().getMethod("stopForeground", mStopForegroundSignature); return; } catch (NoSuchMethodException e) { // Running on an older platform. mStartForeground = mStopForeground = null; } try { mSetForeground = getClass().getMethod("setForeground", mSetForegroundSignature); } catch (NoSuchMethodException e) { // 抛出一个异常 throw new IllegalStateException( "OS doesn't have Service.startForeground OR Service.setForeground!"); } } public int onStartCommand(Intent intent, int flags, int startId) { Log.i(TAG, "recived start id" + startId + ":" + intent); // //获得系统级的服务Location Manager,调用getSystemService()方法实现 locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); // mocLocationProvider 存放gps信息 mocLocationProvider = LocationManager.GPS_PROVIDER; // 根据设置的Criteria对象,获取最符合此标准的provider对象 currentProvider = locationManager.getProvider( LocationManager.GPS_PROVIDER).getName(); // 获取网络位置信息 Provider = locationManager .getProvider(LocationManager.NETWORK_PROVIDER).getName(); // 根据当前provider对象获取最后一次位置信息 l = locationManager.getLastKnownLocation(Provider); latitude = l.getLatitude();// 精确 longitude = l.getLongitude(); chose(); if (flag == 1) { ltd_tmp = latitude1;// 城镇 lng_tmp = longitude1; } if (flag == 2) { ltd_tmp = latitude2;// 街道 lng_tmp = longitude2; } if (flag == 3) { ltd_tmp = latitude;// 精确 lng_tmp = longitude; } if (flag == 0) { ltd_tmp = latitude1;// 精确 lng_tmp = longitude1; } //创建 一个 “用于模拟的坐标提供者” // 创建一个仿真位置信息并添加到当前正在运行的provider中 locationManager.addTestProvider(mocLocationProvider, false, false, false, false, false, false, false, 0, 5); // 让创建好的仿真位置信息对于正在运行的provider可用。并且该值会替代原有真实provider中的数据 locationManager.setTestProviderEnabled(mocLocationProvider, true); Location = new Location(mocLocationProvider); // Location.setTime(currentLocation.getTime() ); // Location.setLatitude(Loc.getLatitude()); // Location.setLongitude(Loc.getLongitude()); float x = 5.0f, y = 0.0f, s = 10.0f; Location.setAccuracy(x);// 设置精度 Location.setSpeed(s); Location.setAltitude(y);// 设置 // Log.e("location", Location.toString()); // 获得已安装的应用程序信息 。可以通过getPackageManager()方法获得 pm = getPackageManager(); // 通过系统服务获取ActivityManager ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); // 获得当前正在运行的activity ComponentName cn = am.getRunningTasks(1).get(0).topActivity; name = cn.getPackageName(); // 在android中提供了一种异步回调机制Handler,使用它,我们可以在完成一个很长时间的任务后做出相应的通知。 handler = new Handler(); // 实现多线程 runnable = new Runnable() { public void run() { DB.closeDB();// 关闭数据库 DB.openDB();// 打开数据库 opDB(); ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); ComponentName cn2 = am.getRunningTasks(1).get(0).topActivity; String cmp = cn2.getPackageName(); // Log.d(TAG, "Updater running"); if (!name.equals(cmp) && cmp.equals("com.example.hermit")) { name = cmp; } if (!name.equals(cmp) && !cmp.equals("com.android.launcher") && !cmp.equals("com.example.hermit")) { Log.d(TAG, cmp); try { ApplicationInfo info = pm.getApplicationInfo(cmp, 0); AN = (String) pm.getApplicationLabel(info);// AN表示获取的应用标签 Log.i("AN", AN); } catch (NameNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } chose(); if (flag == 1) { ltd_tmp = latitude1;// 城镇 lng_tmp = longitude1; } if (flag == 2) { ltd_tmp = latitude2;// 街道 lng_tmp = longitude2; } if (flag == 3) { ltd_tmp = latitude;// 精确 lng_tmp = longitude; } if (flag == 0) { ltd_tmp = latitude1;// 精确 lng_tmp = longitude1; } Location.setTime(System.currentTimeMillis()); Location.setLatitude(ltd_tmp); Location.setLongitude(lng_tmp); //locationManager.setTestProviderLocation(mocLocationProvider, Location); Log.e("l", l.toString()); Log.i("test1", "lat long" + latitude + longitude); Log.i("location", Location.toString()); Log.i("location", "flag=" + flag + " " + ltd_tmp + lng_tmp); try { locationManager.setTestProviderLocation( mocLocationProvider, Location); } catch (IllegalArgumentException e) { Log.d("test", "location error"); String mess = e.getLocalizedMessage(); Log.d("test", mess); } locationManager.requestLocationUpdates(currentProvider, 0, 0, locationListener); currentLocation = locationManager .getLastKnownLocation(currentProvider); if (currentLocation == null) { // Log.d("test","location error"); locationManager.requestLocationUpdates(currentProvider, 0, 0, locationListener); currentLocation = locationManager .getLastKnownLocation(currentProvider); } else { // Log.e("location", currentLocation.toString()); } // 获取当前运行的activity并放于cn2中 // ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); // ComponentName cn2 = am.getRunningTasks(1).get(0).topActivity; // String cmp = cn2.getPackageName(); // // // Log.d(TAG, "Updater running"); // if (!name.equals(cmp) && cmp.equals("com.example.hermit")) { // name = cmp; // } // if (!name.equals(cmp) && !cmp.equals("com.android.launcher") // && !cmp.equals("com.example.hermit")) { // Log.d(TAG, cmp); // try { // ApplicationInfo info = pm.getApplicationInfo(cmp, 0); // AN = (String) pm.getApplicationLabel(info);// AN表示获取的应用标签 // Log.i("AN", AN); // } catch (NameNotFoundException e1) { // // TODO Auto-generated catch block // e1.printStackTrace(); // } Log.d("falg", "flag=" + flag); // chose(); // if (flag == 1) { // ltd_tmp = latitude1;// 城镇 // lng_tmp = longitude1; // } // if (flag == 2) { // ltd_tmp = latitude2;// 街道 // lng_tmp = longitude2; // } // if (flag == 3) { // ltd_tmp = latitude;// 精确 // lng_tmp = longitude; // } // if (flag == 0) { // ltd_tmp = latitude1;// 精确 // lng_tmp = longitude1; // } // Location.setTime(System.currentTimeMillis()); // Location.setLatitude(ltd_tmp); // Location.setLongitude(lng_tmp); // locationManager.setTestProviderLocation(mocLocationProvider, Location); // 监听到用户打开了需要访问位置信息的应用 Log.d("falg", "flag=" + flag); if (flag == 1) { Intent i = new Intent(service.this, Dialog.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Bundle b = new Bundle(); b.putString("textview", "粒度策略:城镇级 "); i.putExtras(b); startActivity(i); flag = 0; } if (flag == 2) { Intent i = new Intent(service.this, Dialog.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Bundle b = new Bundle(); b.putString("textview", "粒度策略:街道级 "); i.putExtras(b); startActivity(i); flag = 0; } if (flag == 3) { Intent i = new Intent(service.this, Dialog.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Bundle b = new Bundle(); b.putString("textview", "粒度策略:精确级 "); i.putExtras(b); startActivity(i); flag = 0; } name = cmp; } handler.postDelayed(this, 3000); } }; handler.postDelayed(runnable, 3000); handleCommand(intent); // new ClientThread().run(); return START_STICKY; } private void chose() { double x1, y1, x2, y2; Random rdr = new Random();// rdr为一组随机数流 Random rdz = new Random(); int Z = rdz.nextInt(360);// 随机数的生成范围小于360 double R2 = 1 + rdr.nextDouble() * 10;// x2街道 double R1 = 9 + rdr.nextDouble() * 20;// x1城镇 if (Z <= 90 && Z >= 0) { x1 = R1 * Math.sin(Z * Math.PI / 180);// (Z*Math.PI/180)为弧度制 y1 = R1 * Math.cos(Z * Math.PI / 180); x2 = R2 * Math.sin(Z * Math.PI / 180); y2 = R2 * Math.cos(Z * Math.PI / 180); } else if (Z <= 180 && Z > 90) { x1 = R1 * Math.cos((Z - 90) * Math.PI / 180); y1 = R1 * Math.sin((Z - 90) * Math.PI / 180) * -1; x2 = R2 * Math.cos((Z - 90) * Math.PI / 180); y2 = R2 * Math.sin((Z - 90) * Math.PI / 180) * -1; } else if (Z <= 270 && Z > 180) { x1 = R1 * Math.sin((Z - 180) * Math.PI / 180) * -1; y1 = R1 * Math.cos((Z - 180) * Math.PI / 180) * -1; x2 = R2 * Math.sin((Z - 180) * Math.PI / 180) * -1; y2 = R2 * Math.cos((Z - 180) * Math.PI / 180) * -1; } else { x1 = R1 * Math.cos((Z - 270) * Math.PI / 180) * -1; y1 = R1 * Math.sin((Z - 270) * Math.PI / 180); x2 = R2 * Math.cos((Z - 270) * Math.PI / 180) * -1; y2 = R2 * Math.sin((Z - 270) * Math.PI / 180); } Log.i("r", "R1=" + R1 + "R2=" + R2); Log.i("x1= y1=", "x1=" + x1 + "y1=" + y1);// 城镇 Log.i("x2= y2=", "x2=" + x2 + "y2=" + y2); // latitude=location.getLatitude();//精确 // longitude=location.getLongitude(); latitude1 = latitude + x1 / 111;// 城镇 longitude1 = longitude + y1 / (111 * Math.cos(Z * Math.PI / 180)); latitude2 = latitude + x2 / 111;// 街道 longitude2 = longitude + y2 / (111 * Math.cos(Z * Math.PI / 180)); // location1.setLatitude(latitude1);//城镇 // location1.setLongitude(longitude1); // // location2.setLatitude(latitude2);//街道 // location2.setLongitude(longitude2); // Log.d("test1111","哈哈"); if (user1.contains(AN) == true) {// 如果应用在用户城镇级 flag = 1; // Log.d("test222","哈哈"); } else { if (user2.contains(AN) == true) flag = 2;// 如果应用在用户街道级 else { if (user3.contains(AN) == true) flag = 3;// 如果应用在用户精确级 else { if (default1.contains(AN) == true) { Log.d("默认城镇级", "哈哈"); flag = 1; } else { if (default2.contains(AN) == true) { Log.d("默认街道级", "哈哈"); flag = 2; } else { if (default3.contains(AN) == true) { Log.d("默认精确级", "哈哈"); flag = 3; } else { flag = 0; } } } } } } } private LocationListener locationListener = new LocationListener() { // 位置发生改变时调用 @Override public void onLocationChanged(Location location) { Log.d("Location", "onLocationChanged"); // handler.removeCallbacks(runnable); } // provider失效时调用 @Override public void onProviderDisabled(String provider) { Log.d("Location", "onProviderdisabled"); } // provider启用时调用 @Override public void onProviderEnabled(String provider) { Log.d("Location", "onProviderEnabled"); Location.setLatitude(ltd_tmp); Location.setLongitude(lng_tmp); } // 状态改变时调用 @Override public void onStatusChanged(String provider, int status, Bundle extras) { Log.d("Location", "onStatusChanged"); Location.setLatitude(ltd_tmp); Location.setLongitude(lng_tmp); } }; void handleCommand(Intent intent) { if (service.ACTION_FOREGROUND.equals(intent.getAction())) { // In this sample, we'll use the same text for the ticker and the // expanded notification CharSequence text = getText(R.string.foreground_service_started); // Set the icon, scrolling text and timestamp Notification notification = new Notification( R.drawable.ic_launcher, text, System.currentTimeMillis()); // The PendingIntent to launch our activity if the user selects this // notification // 用户点击service的通知时返回到主界面 PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, TownactivityActivity.class), 0); // Set the info for the views that show in the notification panel. notification.setLatestEventInfo(this, getText(R.string.local_service_label), text, contentIntent); startForeground(1000, notification); // startForegroundCompat(R.string.foreground_service_started, // notification); } else if (service.ACTION_BACKGROUND.equals(intent.getAction())) { stopForegroundCompat(R.string.foreground_service_started); } } public void onDestroy() { Log.i(TAG, "this is ondestroy"); handler.removeCallbacks(runnable); Toast.makeText(this, "service stopped", Toast.LENGTH_SHORT).show(); } public boolean onUnbind(Intent intent) { Log.i(TAG, "this is onUnbind"); return super.onUnbind(intent); } private void opDB() { // 清空所有元素 user1.clear(); user2.clear(); user3.clear(); default1.clear(); default2.clear(); default3.clear(); // Log.d("1","test"); Cursor tmp1 = DB.select("USER1"); Cursor tmp2 = DB.select("USER2"); Cursor tmp3 = DB.select("USER3"); // Log.d("1","test"); if (tmp1.moveToFirst() == false) ; else { String T1 = tmp1.getString(1); if (user1.contains(T1) == true) ; else user1.add(T1); while (tmp1.moveToNext()) { T1 = tmp1.getString(1); if (user1.contains(T1) == true) ; else user1.add(T1); // Log.d("test",T1); } } if (tmp2.moveToFirst() == false) ; else { String T2 = tmp2.getString(1); if (user2.contains(T2) == true) ; else user2.add(T2); while (tmp2.moveToNext()) { T2 = tmp2.getString(1); if (user2.contains(T2) == true) ; else user2.add(T2); // Log.d("test",T2); } } if (tmp3.moveToFirst() == false) ; else { String T3 = tmp3.getString(1); if (user3.contains(T3) == true) ; else user3.add(T3); while (tmp3.moveToNext()) { T3 = tmp3.getString(1); if (user3.contains(T3) == true) ; else user3.add(T3); // Log.d("test",T3); } } } }

软件测试入门、SQL、性能测试、测试管理工具

软件测试2小时入门,让您快速了解软件测试基本知识,有系统的了解; SQL一小时,让您快速理解和掌握SQL基本语法 jmeter性能测试 ,让您快速了解主流来源性能测试工具jmeter 测试管理工具-禅道,让您快速学会禅道的使用,学会测试项目、用例、缺陷的管理、

计算机组成原理实验教程

西北工业大学计算机组成原理实验课唐都仪器实验帮助,同实验指导书。分为运算器,存储器,控制器,模型计算机,输入输出系统5个章节

Java 最常见的 200+ 面试题:面试必备

这份面试清单是从我 2015 年做了 TeamLeader 之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘在 Java 技术栈中,还有那些知识点是我不知道的,我想找到这些技术盲点,然后修复它,以此来提高自己的技术水平。虽然我是从 2009 年就开始参加编程工作了,但我依旧觉得自己现在要学的东西很多,并且学习这些知识,让我很有成就感和满足感,那所以何乐而不为呢? 说回面试的事,这份面试...

winfrom中嵌套html,跟html的交互

winfrom中嵌套html,跟html的交互,源码就在里面一看就懂,很简单

玩转Python-Python3基础入门

总课时80+,提供源码和相关资料 本课程从Python零基础到纯Python项目实战。内容详细,案例丰富,覆盖了Python知识的方方面面,学完后不仅对Python知识有个系统化的了解,让你从Python小白变编程大牛! 课程包含: 1.python安装 2.变量、数据类型和运算符 3.选择结构 4.循环结构 5.函数和模块 6.文件读写 7.了解面向对象 8.异常处理

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:itxy41)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

基于VHDL的16位ALU简易设计

基于VHDL的16位ALU简易设计,可完成基本的加减、带进位加减、或、与等运算。

MFC一站式终极全套课程包

该套餐共包含从C小白到C++到MFC的全部课程,整套学下来绝对成为一名C++大牛!!!

利用Verilog实现数字秒表(基本逻辑设计分频器练习)

设置复位开关。当按下复位开关时,秒表清零并做好计时准备。在任何情况下只要按下复位开关,秒表都要无条件地进行复位操作,即使是在计时过程中也要无条件地进行清零操作。 设置启/停开关。当按下启/停开关后,将

董付国老师Python全栈学习优惠套餐

购买套餐的朋友可以关注微信公众号“Python小屋”,上传付款截图,然后领取董老师任意图书1本。

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

计算机操作系统 第三版.pdf

计算机操作系统 第三版 本书全面介绍了计算机系统中的一个重要软件——操作系统(OS),本书是第三版,对2001年出版的修订版的各章内容均作了较多的修改,基本上能反映当前操作系统发展的现状,但章节名称基

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

SEIR课程设计源码与相关城市数据.rar

SEIR结合学报与之前博客结合所做的一些改进,选择其中三个城市进行拟合仿真SEIR结合学报与之前博客结合所做的一些改进,选择其中三个城市进行拟合仿真SEIR结合学报与之前博客结合所做的一些改进,选择其

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

定量遥感中文版 梁顺林著 范闻捷译

这是梁顺林的定量遥感的中文版,由范闻捷等翻译的,是电子版PDF,解决了大家看英文费时费事的问题,希望大家下载看看,一定会有帮助的

GIS程序设计教程 基于ArcGIS Engine的C#开发实例

张丰,杜震洪,刘仁义编著.GIS程序设计教程 基于ArcGIS Engine的C#开发实例.浙江大学出版社,2012.05

人工智能-计算机视觉实战之路(必备算法+深度学习+项目实战)

系列课程主要分为3大阶段:(1)首先掌握计算机视觉必备算法原理,结合Opencv进行学习与练手,通过实际视项目进行案例应用展示。(2)进军当下最火的深度学习进行视觉任务实战,掌握深度学习中必备算法原理与网络模型架构。(3)结合经典深度学习框架与实战项目进行实战,基于真实数据集展开业务分析与建模实战。整体风格通俗易懂,项目驱动学习与就业面试。 建议同学们按照下列顺序来进行学习:1.Python入门视频课程 2.Opencv计算机视觉实战(Python版) 3.深度学习框架-PyTorch实战/人工智能框架实战精讲:Keras项目 4.Python-深度学习-物体检测实战 5.后续实战课程按照自己喜好选择就可以

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

去除异常值matlab程序

数据预处理中去除异常值的程序,matlab写成

用verilog HDL语言编写的秒表

在秒表设计中,分模块书写。用在七段数码管上显示。输入频率是1KHZ.可以显示百分秒,秒,分。如要显示小时,只需修改leds里的代码和主模块代码。改程序以通过硬件电路验证。完全正确。

[透视java——反编译、修补和逆向工程技术]源代码

源代码。

用QUARTUS设计模可变计数器器

用QUARTUS设计摸20|60的模可变计数器,文本设计

随机迷宫路径算法

基于C++写成的路径寻找,能够自动生成随机迷宫,并通过A*算法得到最短路径到达出口,可以直观地看到迷宫的构成以及路径的生成

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

Spring Boot -01- 快速入门篇(图文教程)

Spring Boot -01- 快速入门篇 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到【慕课网】手机 app,去找【Spring Boot 2.0 深度实践】的课程,令人开心的是,课程完全免费! 什么是 Spring Boot? Spring Boot 是由 Pivotal 团队提供的全新框架。Spring Boot...

MySQL数据库从入门到实战应用

限时福利1:购课进答疑群专享柳峰(刘运强)老师答疑服务 限时福利2:购课后添加学习助手(微信号: itxy41),按消息提示即可领取编程大礼包! 为什么说每一个程序员都应该学习MySQL? 根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL数据库。 使用量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入的了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能! 【课程设计】 在本课程中,刘运强老师会结合自己十多年来对MySQL的心得体会,通过课程给你分享一条高效的MySQL入门捷径,让学员少走弯路,彻底搞懂MySQL。 本课程包含3大模块:&nbsp; 一、基础篇: 主要以最新的MySQL8.0安装为例帮助学员解决安装与配置MySQL的问题,并对MySQL8.0的新特性做一定介绍,为后续的课程展开做好环境部署。 二、SQL语言篇: 本篇主要讲解SQL语言的四大部分数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL,学会熟练对库表进行增删改查等必备技能。 三、MySQL进阶篇: 本篇可以帮助学员更加高效的管理线上的MySQL数据库;具备MySQL的日常运维能力,语句调优、备份恢复等思路。 &nbsp;

相关热词 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行 c# 循环给数组插入数据 c# 多线程死锁的例子 c# 钉钉读取员工排班 c# label 不显示 c#裁剪影像 c#工作进程更新ui
立即提问