高德地图定位 onLocationChanged 没有触发

private void initLocation() {
// 初始化定位,
mlocationClient = new AMapLocationClient(getApplicationContext());
// 初始化定位参数
mLocationOption = new AMapLocationClientOption();
// 设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
mLocationOption.setLocationMode(AMapLocationMode.Battery_Saving);
// 设置是否返回地址信息(默认返回地址信息)
mLocationOption.setNeedAddress(true);
// 设置是否只定位一次,默认为false
mLocationOption.setOnceLocation(false);
// 设置是否强制刷新WIFI,默认为强制刷新
mLocationOption.setWifiActiveScan(true);
// 设置是否允许模拟位置,默认为false,不允许模拟位置
mLocationOption.setMockEnable(false);
// 设置定位间隔,单位毫秒,默认为2000ms
mLocationOption.setInterval(2000);
// 给定位客户端对象设置定位参数
mlocationClient.setLocationOption(mLocationOption);
// 设置定位回调监听
mlocationClient.setLocationListener(this);
mlocationClient.startLocation();
}
@Override
public void onLocationChanged(AMapLocation amapLocation) {
// TODO Auto-generated method stub
if (amapLocation != null) {
if (amapLocation.getErrorCode() == 0) {
//瀹氫綅鎴愬姛鍥炶皟淇℃伅锛岃缃浉鍏虫秷鎭�
Toast.makeText(MainActivity.this, amapLocation.getCity(), 0).show();
address.setText(amapLocation.getCity());
} else {
//鏄剧ず閿欒淇℃伅ErrCode鏄敊璇爜锛宔rrInfo鏄敊璇俊鎭紝璇﹁閿欒鐮佽〃銆�
Log.e("AmapError","location Error, ErrCode:"
+ amapLocation.getErrorCode() + ", errInfo:"
+ amapLocation.getErrorInfo());
}
}
}

2个回答

如何修改驱动参数使之变成竖屏。通过修改注册表只能把显示调整成竖屏,即LCD旋转90度,但是触摸点的位置还是原来的。所以真能通过调整驱动来实

手机定位或者网络信号不好(比如在地下室、或者房间里面),这种情况下就会发生不能触发。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
安卓大神们 有个问题想请教下 高德地图的onLocationChanged触发了两次。
正常应该是先走activate然后通过setLocationListener触发onLocationChanged然后进行异步搜索,但是现在每次异步搜索完成后却又莫名跳到onLocationChanged中,因activate中存有条件,所以这次查询就是空值,在页面上也显示不出来,求大神解答~
高德地图Android定位SDK真机上无法定位
用高德地图的定位SDK写了一个定位的程序 但是在真机运行的时候 public void onLocationChanged(AMapLocation amapLocation) 在这个定位监听回调方法里、我从amapLocation里获得经纬度 然后写到logcat里、但是竟然都是0、 打开程序后画面就停在北京地图。。。 但是用模拟器时手动给程序喂经纬度是可以定位的、感觉问题就出在回调函数里 但不知道怎么解决、看了一些博客、代码按他们的来也是一样的情况 有没有人知道是什么情况、初学者求解答 --------------------------------------------------------- GPS开了、wifi连着、但是手机在室内信号不太好 Manifest里权限、服务和key也都粘贴了 而且设置里也给APP使用定位服务的权限了 log里错误码一直说定位失败12: 缺少定位权限 着实弄不懂是什么情况TAT
高德地图能获取到经纬度,但不能将地图移动到定位点,
package com.example.zengyue.gould_map; import android.app.Activity; import android.content.Intent; import android.icu.text.SimpleDateFormat; import android.os.Build; import android.os.Bundle; import android.support.annotation.RequiresApi; import android.util.Log; import android.view.Window; import android.widget.Toast; import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocationClient; import com.amap.api.location.AMapLocationClientOption; import com.amap.api.location.AMapLocationListener; import com.amap.api.maps2d.AMap; import com.amap.api.maps2d.CameraUpdateFactory; import com.amap.api.maps2d.LocationSource; import com.amap.api.maps2d.MapView; import com.amap.api.maps2d.UiSettings; import com.amap.api.maps2d.model.LatLng; import java.util.Date; public class MainActivity extends Activity implements LocationSource,AMapLocationListener{ //AMap是地图对象 private AMap aMap; private MapView mMapView; //声明AMapLocationClient类对象,定位发起端 private AMapLocationClient mLocationClient = null; //声明mLocationOption对象,定位参数 public AMapLocationClientOption mLocationOption = null; //声明mListener对象,定位监听器 private OnLocationChangedListener mListener = null; //标识,用于判断是否只显示一次定位信息和用户重新定位 private boolean isFirstLoc = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); //获取地图控件 mMapView= (MapView) findViewById(R.id.map); //创建地图 mMapView.onCreate(savedInstanceState);//重写 if (aMap==null){ aMap =mMapView.getMap(); //设置显示定位按钮 并且可以点击 UiSettings settings = aMap.getUiSettings(); aMap.setLocationSource(this);//设置了定位的监听 // 是否显示定位按钮 settings.setMyLocationButtonEnabled(true); aMap.setMyLocationEnabled(true);//显示定位层并且可以触发定位,默认是flase } //开始定位 location(); } private void location() { //初始化定位 mLocationClient = new AMapLocationClient(getApplicationContext()); //初始化定位参数 mLocationOption = new AMapLocationClientOption(); //设置是否返回地址信息(默认返回地址信息) mLocationOption.setNeedAddress(true); //设置定位模式为Hight_Accuracy高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式 mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); // //设置是否只定位一次,默认为false // mLocationOption.setOnceLocation(false); // //设置是否强制刷新WIFI,默认为强制刷新 // mLocationOption.setWifiActiveScan(true); // //设置是否允许模拟位置,默认为false,不允许模拟位置 // mLocationOption.setMockEnable(true); //设置定位间隔,单位毫秒,默认为2000ms mLocationOption.setInterval(2000); //给定位客户端对象设置定位参数 mLocationClient.setLocationOption(mLocationOption); //启动定位 mLocationClient.startLocation(); //设置定位回调监听 mLocationClient.setLocationListener(this); } @Override protected void onResume() { super.onResume(); //重新绘制加载地图 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //暂停地图的绘制 mMapView.onResume(); } @Override protected void onDestroy() { super.onDestroy(); //销毁地图 mMapView.onDestroy(); mLocationClient.stopLocation();//停止定位 mLocationClient.onDestroy();//销毁定位客户端。 } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); //保存地图的当前状态 mMapView.onSaveInstanceState(outState); } @RequiresApi(api = Build.VERSION_CODES.N) @Override public void onLocationChanged(AMapLocation aMapLocation) { Log.i("ttt",">>>>>>>>>>1"); if (aMapLocation != null) { Log.i("ttt",">>>>>>>>>>2"); if (aMapLocation.getErrorCode() == 0) { Log.i("ttt",">>>>>>>>>>"+aMapLocation.getLatitude()+">>>>>>>>>"+//获取纬度 aMapLocation.getLongitude()); //定位成功回调信息,设置相关消息 aMapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见官方定位类型表 aMapLocation.getLatitude();//获取纬度 aMapLocation.getLongitude();//获取经度 aMapLocation.getAccuracy();//获取精度信息 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(aMapLocation.getTime()); df.format(date);//定位时间 aMapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。 aMapLocation.getCountry();//国家信息 aMapLocation.getProvince();//省信息 aMapLocation.getCity();//城市信息 aMapLocation.getDistrict();//城区信息 aMapLocation.getStreet();//街道信息 aMapLocation.getStreetNum();//街道门牌号信息 aMapLocation.getCityCode();//城市编码 aMapLocation.getAdCode();//地区编码 Log.i("ttt",aMapLocation.getCountry().toString()+aMapLocation.getProvince().toString()+aMapLocation.getCity().toString()+aMapLocation.getDistrict().toString()+aMapLocation.getStreet().toString()); // 如果不设置标志位,此时再拖动地图时,它会不断将地图移动到当前的位置 if (isFirstLoc) { //设置缩放级别 aMap.moveCamera(CameraUpdateFactory.zoomTo(17)); //将地图移动到定位点 aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(aMapLocation.getLatitude(), aMapLocation.getLongitude()))); //点击定位按钮 能够将地图的中心移动到定位点 mListener.onLocationChanged(aMapLocation); //添加图钉 // aMap.addMarker(getMarkerOptions(amapLocation)); //获取定位信息 StringBuffer buffer = new StringBuffer(); buffer.append(aMapLocation.getCountry() + "" + aMapLocation.getProvince() + "" + aMapLocation.getCity() + "" + aMapLocation.getProvince() + "" + aMapLocation.getDistrict() + "" + aMapLocation.getStreet() + "" + aMapLocation.getStreetNum()); Toast.makeText(getApplicationContext(), buffer.toString(), Toast.LENGTH_LONG).show(); isFirstLoc = false; Log.i("ttt",buffer.toString()); } } else { //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。 Log.e("AmapError", "location Error, ErrCode:" + aMapLocation.getErrorCode() + ", errInfo:" + aMapLocation.getErrorInfo()); Toast.makeText(getApplicationContext(), "定位失败", Toast.LENGTH_LONG).show(); } } } //激活定位 @Override public void activate(OnLocationChangedListener onLocationChangedListener) { mListener=onLocationChangedListener; } //停止定位 @Override public void deactivate() { mListener=null; } } ``` <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.zengyue.gould_map"> <!--用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <!--用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <!--用于获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <!--用于访问wifi网络信息,wifi信息会用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <!--用于获取wifi的获取权限,wifi信息会用来进行网络定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <!--用于访问网络,网络定位需要上网--> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <!--用于读取手机当前的状态--> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <!--用于写入缓存数据到扩展存储卡--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <!--用于申请调用A-GPS模块--> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission> <!--用于申请获取蓝牙信息进行室内定位--> <uses-permission android:name="android.permission.BLUETOOTH"></uses-permission> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <service android:name="com.amap.api.location.APSService"/> <meta-data android:name="com.amap.api.v2.apikey" android:value="c0fede08d244f741d053af1396317383" /> <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> ``` <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.zengyue.gould_map.MainActivity"> <com.amap.api.maps2d.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent"> </com.amap.api.maps2d.MapView> </RelativeLayout>
为什么高德地图运行之后只能定位一次小篮点,退出后再进去就没小篮点了,变成默认的地图了
``` ```package com.test.demo.newsonline; import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocationListener; import com.amap.api.location.LocationManagerProxy; import com.amap.api.location.LocationProviderProxy; import com.amap.api.maps2d.AMap; import com.amap.api.maps2d.LocationSource; import com.amap.api.maps2d.MapView; import com.amap.api.maps2d.model.BitmapDescriptorFactory; import com.amap.api.maps2d.model.MyLocationStyle; import com.test.demo.R; import android.app.Activity; import android.graphics.Color; import android.location.Location; import android.os.Bundle; public class NearbyActivitty extends Activity implements LocationSource, AMapLocationListener{ private AMap aMap; private MapView mapView; private OnLocationChangedListener mListener; private LocationManagerProxy mAMapLocationManager; //LocationManagerProxy:定位服务类。 //这个定位类允许应用定时更新获取设备的地理位置,或者当这个设备进入指定的地理位置时,启动一个应用指定的Intent。 @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_nearby); mapView = (MapView) findViewById(R.id.map); mapView.onCreate(savedInstanceState);// 必须要写 init(); } /** * 初始化AMap对象 */ private void init() { if (aMap == null) { aMap = mapView.getMap(); setUpMap(); } } /** * 设置一些amap的属性 */ private void setUpMap() { // 自定义系统定位小蓝点 MyLocationStyle myLocationStyle = new MyLocationStyle(); myLocationStyle.myLocationIcon(BitmapDescriptorFactory .fromResource(R.drawable.location_marker));// 设置小蓝点的图标 myLocationStyle.strokeColor(Color.BLACK);// 设置圆形的边框颜色 myLocationStyle.radiusFillColor(Color.argb(100, 0, 0, 180));// 设置圆形的填充颜色 // myLocationStyle.anchor(int,int)//设置小蓝点的锚点 myLocationStyle.strokeWidth(1.0f);// 设置圆形的边框粗细 aMap.setMyLocationStyle(myLocationStyle); aMap.setLocationSource(this);// 设置定位监听 aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示 aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false // aMap.setMyLocationType() } /** * 此方法已经废弃 */ @Override public void onLocationChanged(Location location) { } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } /** * 定位成功后回调函数 */ @Override public void onLocationChanged(AMapLocation aLocation) { if (mListener != null && aLocation != null) { mListener.onLocationChanged(aLocation);// 显示系统小蓝点 } } /** * 激活定位 */ @Override public void activate(OnLocationChangedListener listener) { mListener = listener; if (mAMapLocationManager == null) { mAMapLocationManager = LocationManagerProxy.getInstance(this); //此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗, //注意设置合适的定位时间的间隔,并且在合适时间调用removeUpdates()方法来取消定位请求 //在定位结束后,在合适的生命周期调用destroy()方法 //其中如果间隔时间为-1,则定位只定一次 /* * mAMapLocManager.setGpsEnable(false); * 1.0.2版本新增方法,设置true表示混合定位中包含gps定位,false表示纯网络定位,默认是true Location * API定位采用GPS和网络混合定位方式 * ,第一个参数是定位provider,第二个参数时间最短是2000毫秒,第三个参数距离间隔单位是米,第四个参数是定位监听者 */ mAMapLocationManager.requestLocationUpdates( LocationProviderProxy.AMapNetwork, 2000, 10, this); } } /** * 停止定位 */ @Override public void deactivate() { mListener = null; if (mAMapLocationManager != null) { mAMapLocationManager.removeUpdates(this); mAMapLocationManager.destory(); } mAMapLocationManager = null; } /** * 方法必须重写 */ @Override protected void onResume() { super.onResume(); mapView.onResume(); } /** * 方法必须重写 */ @Override protected void onPause() { super.onPause(); mapView.onPause(); } /** * 方法必须重写 */ @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } /** * 方法必须重写 */ @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); } }
Fragment无法进行高德定位,求解决!
同样的方法在Activity里可以正常显示,但在Fragment里只加载出了地图,无法显示定位。应该是Fragment的问题。求大神教育! public class ParkFragment extends Fragment implements LocationSource AMapLocationListener OnCheckedChangeListener{ private MapView mapView; private AMap aMap; private OnLocationChangedListener mListener; private LocationManagerProxy mAMapLocationManager; private ImageView imglist; @Override public View onCreateView(LayoutInflater inflater ViewGroup container Bundle savedInstanceState) { View view = inflater.inflate(R.layout.tab01 container false); imglist = (ImageView) view.findViewById(R.id.imglist); imglist.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity() ParklistActivity.class); startActivity(intent); } }); //在onCreate方法中给aMap对象赋值 mapView = (MapView) view.findViewById(R.id.map); mapView.onCreate(savedInstanceState);// 必须要写 aMap = mapView.getMap(); return view; } @Override public void onAttach(Activity activity) { super.onAttach(activity); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); init(); } /** * 初始化AMap对象 */ public void init() { if (aMap == null) { aMap = mapView.getMap(); setUpMap(); } } public void setUpMap() { aMap.setLocationSource((LocationSource) getActivity());// 设置定位监听 aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示 aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE); } /** * 此方法需存在 */ @Override public void onResume() { super.onResume(); mapView.onResume(); } /** * 此方法需存在 */ @Override public void onPause() { super.onPause(); mapView.onPause(); deactivate(); } /** * 方法必须重写 */ @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } /** * 此方法需存在 */ @Override public void onDestroy() { super.onDestroy(); mapView.onDestroy(); } @Override public void onLocationChanged(Location location) { } /** * 定位成功后回调函数 */ @Override public void onLocationChanged(AMapLocation amapLocation) { if (mListener != null && amapLocation != null) { if (amapLocation!=null&&amapLocation.getAMapException().getErrorCode() == 0) { mListener.onLocationChanged(amapLocation);// 显示系统小蓝点 } } } /** * 激活定位 */ @Override public void activate(OnLocationChangedListener listener) { mListener = listener; if (mAMapLocationManager == null) { mAMapLocationManager = LocationManagerProxy.getInstance(getActivity()); //此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗, //注意设置合适的定位时间的间隔,并且在合适时间调用removeUpdates()方法来取消定位请求 //在定位结束后,在合适的生命周期调用destroy()方法 //其中如果间隔时间为-1,则定位只定一次 mAMapLocationManager.requestLocationData( LocationProviderProxy.AMapNetwork 60*1000 10 this); } } /** * 停止定位 */ @Override public void deactivate() { mListener = null; if (mAMapLocationManager != null) { mAMapLocationManager.removeUpdates(this); mAMapLocationManager.destroy(); } mAMapLocationManager = null; } @Override public void onStatusChanged(String provider int status Bundle extras) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onCheckedChanged(RadioGroup group int checkedId) { // TODO Auto-generated method stub }
关于高德地图绘制区域面的问题?有大神解答一下吗?
我的代码是这样的 ``` package com.chenxi.bimquanziguankong.activity; import android.Manifest; import android.content.Context; import android.content.Intent; import android.graphics.BitmapFactory; import android.graphics.Color; import android.os.Bundle; import android.support.annotation.NonNull; import android.text.method.ScrollingMovementMethod; import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocationClient; import com.amap.api.location.AMapLocationClientOption; import com.amap.api.maps2d.AMap; import com.amap.api.maps2d.CameraUpdateFactory; import com.amap.api.maps2d.LocationSource; import com.amap.api.maps2d.MapView; import com.amap.api.maps2d.UiSettings; import com.amap.api.maps2d.model.BitmapDescriptorFactory; import com.amap.api.maps2d.model.LatLng; import com.amap.api.maps2d.model.Marker; import com.amap.api.maps2d.model.MarkerOptions; import com.amap.api.maps2d.model.MyLocationStyle; import com.amap.api.maps2d.model.PolygonOptions; import com.blankj.utilcode.util.ToastUtils; import com.chenxi.bimquanziguankong.R; import com.chenxi.bimquanziguankong.entity.ProjectInfo; import com.chenxi.bimquanziguankong.utils.LocationUtil; import java.util.ArrayList; import java.util.List; import pub.devrel.easypermissions.EasyPermissions; public class ProjectSurveyActivity extends BaseActivity implements LocationSource, EasyPermissions.PermissionCallbacks { private Context context; private ProjectInfo projectInfo;//从ProjectChooseActivity传过来的ProjectInfo private AMapLocationClient aMapLocationClient; private AMapLocationClientOption clientOption; private TextView projectSurvey; private ImageView back; private MapView mapView; private AMap aMap; private LocationSource.OnLocationChangedListener mListener = null;//定位监听器 private LocationUtil locationUtil; private String[] jiweiData; private double mlat, mlgt; private String Coordinate; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_project_survey); //获取从ProjectChooseActivity传递过来的数据 Intent intent = getIntent(); projectInfo = (ProjectInfo) intent.getSerializableExtra("projectInfo"); Coordinate = projectInfo.getCoordinate(); Log.e("TAG", "噢噢噢噢 " + Coordinate); projectSurvey = findViewById(R.id.tv_project_survey); if (projectInfo.getDescription() != null) { projectSurvey.setText(projectInfo.getDescription());//概况描述 } projectSurvey.setMovementMethod(ScrollingMovementMethod.getInstance());//把TextView设置成可滑动 projectSurvey = findViewById(R.id.tv_project_survey); back = findViewById(R.id.toolbar_left_btn); back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); mapView = findViewById(R.id.project_survey_map); // 必须要写 mapView.onCreate(savedInstanceState); // 开启定位权限,并开始定位 if (EasyPermissions.hasPermissions(this, Manifest.permission.ACCESS_COARSE_LOCATION)) {//检查是否获取该权限 init(); } else { //第二个参数是被拒绝后再次申请该权限的解释 //第三个参数是请求码 //第四个参数是要申请的权限 EasyPermissions.requestPermissions(this, "定位需要定位权限", 0, Manifest.permission.ACCESS_COARSE_LOCATION); } } private void init() { if (aMap == null) { aMap = mapView.getMap(); } setLocationCallBack(); //设置定位监听 aMap.setLocationSource(this); //设置缩放级别 aMap.moveCamera(CameraUpdateFactory.zoomTo(17)); // 设置显示定位按钮 并且可以点击 UiSettings settings = aMap.getUiSettings(); // 是否显示定位按钮 settings.setMyLocationButtonEnabled(false); // 关闭一切手势操作 settings.setAllGesturesEnabled(true); // 是否显示缩放按钮 settings.setZoomControlsEnabled(false); MyLocationStyle myLocationStyle = new MyLocationStyle(); myLocationStyle.myLocationIcon(BitmapDescriptorFactory .fromResource(R.drawable.maplocation));// 设置小蓝点的图标 myLocationStyle.strokeColor(Color.argb(0, 0, 0, 0));// 设置圆形的边框颜色 myLocationStyle.radiusFillColor(Color.argb(0, 0, 0, 0));// 设置圆形的填充颜色 myLocationStyle.strokeWidth(0f);// 设置圆形的边框粗细 // myLocationStyle.anchor(int,int)//设置小蓝点的锚点 // getMap().setLatLonQuanVisible(false); aMap.getUiSettings().setCompassEnabled(false); aMap.setMyLocationStyle(myLocationStyle); aMap.getUiSettings().setMyLocationButtonEnabled(false);// 设置默认定位按钮是否显示 // aMap.setMyLocationType() //显示定位层并可触发,默认false aMap.setMyLocationEnabled(true); aMap.setMapType(AMap.MAP_TYPE_SATELLITE); // LatLng latLng = new LatLng(38.906901,116.397972); // final Marker marker = aMap.addMarker(new MarkerOptions().position(latLng).title("").snippet("DefaultMarker")); } private void setLocationCallBack() { if (Coordinate != null) { jiweiData = Coordinate.substring(2, Coordinate.length() - 2).split(","); Log.e("TAG", " qqqqqqqq" + jiweiData); mlgt = Double.parseDouble(jiweiData[0].substring(1)); mlat = Double.parseDouble(jiweiData[1].substring(0, jiweiData[1].length() - 1)); Log.e("TAG", " wwwww" + mlgt + "rrrrrrr" + mlat); LatLng latLng1=new LatLng(108.286888,22.8389); LatLng latLng2=new LatLng(108.284566,22.8354); LatLng latLng3=new LatLng(108.287462,22.838598); LatLng latLng4=new LatLng(108.287215,22.83846); LatLng latLng5=new LatLng(108.286952,22.838504); /* LatLng latLng1 = new LatLng(Double.parseDouble(jiweiData[0].substring(1)) , Double.parseDouble(jiweiData[1].substring(0, jiweiData[1].length() - 1))); LatLng latLng2 = new LatLng(Double.parseDouble(jiweiData[2].substring(1)), Double.parseDouble(jiweiData[3].substring(0, jiweiData[3].length() - 1))); LatLng latLng3 = new LatLng(Double.parseDouble(jiweiData[4].substring(1)) , Double.parseDouble(jiweiData[5].substring(0, jiweiData[5].length() - 1))); LatLng latLng4 = new LatLng(Double.parseDouble(jiweiData[6].substring(1)) , Double.parseDouble(jiweiData[7].substring(0, jiweiData[7].length() - 1))); LatLng latLng5 = new LatLng(Double.parseDouble(jiweiData[8].substring(1)), Double.parseDouble(jiweiData[9].substring(0, jiweiData[9].length() - 1)));*/ // LatLng latLng2=new LatLng(Double.parseDouble(jiweiData[2].substring(1)),Double.parseDouble(jiweiData[3].substring(0, jiweiData[1].length() - 1))); //根据获取的经纬度,将地图移动到定位位置 aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(mlat, mlgt))); MarkerOptions markerOptions = new MarkerOptions(); markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.maplocation)); markerOptions.position(new LatLng(mlat, mlgt)); markerOptions.title("位置"); markerOptions.snippet("纬度:" + mlat + " 经度:" + mlgt); markerOptions.period(100); aMap.addMarker(markerOptions); // List<LatLng> latLngs = new ArrayList<>(); //latLngs.add(1,Double.parseDouble(jiweiData[0].substring(1))); /// latLngs.add(new LatLng(Double.parseDouble(jiweiData[2].substring(1)), //Double.parseDouble(jiweiData[3].substring(0, jiweiData[3].length() - 1)))); /* latLngs.add(new LatLng(Double.parseDouble(jiweiData[2].substring(1)), Double.parseDouble(jiweiData[3].substring(0, jiweiData[3].length() - 1)))); latLngs.add(new LatLng(Double.parseDouble(jiweiData[3].substring(1)), Double.parseDouble(jiweiData[4].substring(0, jiweiData[4].length() - 1)))); latLngs.add(new LatLng(Double.parseDouble(jiweiData[4].substring(1)), Double.parseDouble(jiweiData[5].substring(0, jiweiData[5].length() - 1))));*/ Log.e("TAG", "经纬度456 " + latLng1 + "a" + latLng2 + latLng3 + latLng4 + latLng5); PolygonOptions polygonOptions = new PolygonOptions(); polygonOptions.add(latLng1, latLng2, latLng3, latLng4, latLng5); polygonOptions.strokeWidth(15) .strokeColor(Color.argb(50, 1, 1, 1)) .fillColor(Color.argb(1, 1, 1, 1)); aMap.addPolygon(polygonOptions); Log.e("TAG", "运行到这里啦: "); /* mListener.onLocationChanged(aMapLocation); //添加定位图标 aMap.addMarker(locationUtil.getMarkerOption(str, mlat, mlgt));*/ } /*locationUtil = new LocationUtil(); locationUtil.setLocationCallBack(new LocationUtil.ILocationCallBack() { @Override public void callBack(String str, double lat, double lgt, AMapLocation aMapLocation) { // if(Coordinate==null){ // //根据获取的经纬度,将地图移动到定位位置 // aMap.moveCamera(CameraUpdateFactory.changeLatLng(new LatLng(lat, lgt))); // mListener.onLocationChanged(aMapLocation); // //添加定位图标 // aMap.addMarker(locationUtil.getMarkerOption(str, lat, lgt)); // }else } }); */ } //定位激活回调 @Override public void activate(OnLocationChangedListener onLocationChangedListener) { mListener = onLocationChangedListener; locationUtil.startLocate(getApplicationContext()); } @Override public void deactivate() { mListener = null; } @Override protected void onPause() { super.onPause(); //暂停地图的绘制 mapView.onPause(); } @Override protected void onDestroy() { super.onDestroy(); //销毁地图 mapView.onDestroy(); } @Override protected void onResume() { super.onResume(); //重新绘制加载地图 mapView.onResume(); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } // @Override // public void onPermissionsGranted(int i, List<String> list) { // // } // // @Override // public void onPermissionsDenied(int i, List<String> list) { // // } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); //把申请权限的回调交由EasyPermissions处理 EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } //下面两个方法是实现EasyPermissions的EasyPermissions.PermissionCallbacks接口 //分别返回授权成功和失败的权限 @Override public void onPermissionsGranted(int requestCode, List<String> perms) { if (perms.get(0).equals("android.permission.READ_PHONE_STATE")) { ToastUtils.showShort("READ_PHONE_STATE权限获取成功"); } else if (perms.get(0).equals("android.permission.ACCESS_COARSE_LOCATION")) { ToastUtils.showShort("定位权限获取成功"); init(); } } @Override public void onPermissionsDenied(int requestCode, List<String> perms) { if (perms.get(0).equals("android.permission.ACCESS_COARSE_LOCATION")) { ToastUtils.showShort("定位权限获取失败,请在设置中手动开启"); } } } ``` 我的log打印出来的数据是 ``` 07-16 17:38:51.294 19116-19116/com.chenxi.bimquanziguankong E/TAG: 噢噢噢噢 [[[108.286888,22.8389],[108.287317,22.8389],[108.287462,22.838598],[108.287215,22.83846],[108.286952,22.838504]]] 07-16 17:38:51.426 19116-19116/com.chenxi.bimquanziguankong E/TAG: qqqqqqqq[Ljava.lang.String;@282045c3 07-16 17:38:51.426 19116-19116/com.chenxi.bimquanziguankong E/TAG: wwwww108.286888rrrrrrr22.8389 07-16 17:38:51.439 19116-19116/com.chenxi.bimquanziguankong E/TAG: 经纬度456 lat/lng: (90.0,22.8389)alat/lng: (90.0,22.8389)lat/lng: (90.0,22.838598)lat/lng: (90.0,22.83846)lat/lng: (90.0,22.838504) 07-16 17:38:51.449 19116-19116/com.chenxi.bimquanziguankong E/TAG: 运行到这里啦: ``` 就是它的经度会变成90.0无论我给它的经度是多少都是90.然后区域也画不出来。有大神知道什么原因吗?
我通过GPS用locationmanager获取不到位置,不会回调onLocationChanged
我通过GPS用locationmanager根本获取不到位置 不会回调onLocationChanged,室内室外都不行,移动了也不行,用的真机测试 ``` private LocationListener listener = new LocationListener() { @Override public void onLocationChanged(Location location) { LogUtil.e("onLocationChanged"); if (location == null) { return; } ToastUtil.showShortToast(MyApplication.getInstance().getApplicationContext(),"获取位置"+location.getLatitude() + ""); //纬度 LogUtil.e(location.getLatitude() + ""); //经度 LogUtil.e(location.getLongitude() + ""); sendLocation(location.getLatitude() + "", location.getLongitude() + ""); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { /*即使某个供应商是enable,也不表示可以从他处监听位置信息,例如GPS是enable的,但是搜索不到卫星, 状态包括有:OUT_OF_SERVICE,TEMPORARILY_UNAVAILABLE和AVAILABLE*/ } @Override public void onProviderEnabled(String provider) { /* 当用户在系统设置中,开启某个位置供应商*/ } @Override public void onProviderDisabled(String provider) { /*当用户在系统设置中,关闭某个供应商。如果某个供应商是disabled,当通过requestLocationUpdate() 向系统注册监听位置,马上就会触发onProviderDisabled()。*/ } }; locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener); ```
【新手求助】安卓 利用百度地图定位
import java.util.List; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private Button bt; private TextView tv_coordinate; private TextView tv_city; private String provider; private LocationManager locationManager; private LocationClient locationClient = null; private LocationClientOption option; // private BDLocationListener bdLocationListener; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); tv_coordinate = (TextView)findViewById(R.id.textView1); tv_city = (TextView)findViewById(R.id.textView2); bt = (Button)findViewById(R.id.button1); locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); bt.setOnClickListener(new OnClickListener() { public void onClick(View v) { } }); //坐标 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, "No Location provider", Toast.LENGTH_SHORT).show(); return; } Location location = locationManager.getLastKnownLocation(provider); if(location != null) { showLocation(location); } locationManager.requestLocationUpdates(provider, 5000, 10, locationListener); //城市名 locationClient = new LocationClient(getApplicationContext()); locationClient.registerLocationListener(bdLocationListener); option.setCoorType("all"); option.setOpenGps(true); BDLocation bdLocation = locationClient.getLastKnownLocation(); if(bdLocation != null) { showBDlocation(bdLocation); } locationClient.registerNotifyLocationListener(bdLocationListener); locationClient.requestLocation(); locationClient.requestNotifyLocation(); } 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); } }; public void showLocation(Location location) { String coordinate = "纬度:" + location.getLatitude() + "\n" + "经度:" + location.getLongitude(); tv_coordinate.setText(coordinate); } BDLocationListener bdLocationListener = new BDLocationListener() { public void onReceiveLocation(BDLocation bdlocation) { showBDlocation(bdlocation); } }; public void showBDlocation(BDLocation bdLocation) { String city = bdLocation.getCity(); tv_city.setText(city); } } 运行报错java.lang.NoClassDefFoundError: com.zk.dddd.MainActivity$2 求帮助解决错误 想知道怎么能定位出当前城市
Android中百度地图定位问题
public class MainActivity extends Activity { private MapView mapView; private LocationManager locationManager; private String provider; private Location location; private BaiduMap baiduMap; private boolean isFirstLocate=true; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); mapView=(MapView)findViewById(R.id.map1_view); baiduMap=mapView.getMap(); 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, "请打开GPS或者联网!", Toast.LENGTH_LONG).show(); return; } location=locationManager.getLastKnownLocation(provider); if(location !=null){ Log.d("map", "ffff"); showLocation(location); } locationManager.requestLocationUpdates(provider, 5000, 1, locationListener); } LocationListener locationListener=new LocationListener() { @Override public void onStatusChanged(String arg0, int arg1, Bundle arg2) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String arg0) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String arg0) { // TODO Auto-generated method stub } @Override public void onLocationChanged(Location arg0) { if(location!=null){ showLocation(location); } } }; protected void showLocation(Location location){ if(isFirstLocate){ LatLng latLng=new LatLng(location.getLatitude(), location.getAltitude()); MapStatusUpdate update=MapStatusUpdateFactory.newLatLng(latLng); baiduMap.animateMapStatus(update); update=MapStatusUpdateFactory.zoomTo(16f); baiduMap.animateMapStatus(update); isFirstLocate=false; } Log.d("map", "ggggg"); } protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); mapView.onDestroy(); if(location!=null){ locationManager.removeUpdates(locationListener); } } 为什么我一直无法地位到我所在地,还有就是我的key什么都没错,因为我地图能显示默认的北京地图。
java关于接口参数的赋值问题
一直没有想明白这个怎么实现的。本来已经实现了接口的回调,但是在接口回调里面还有一个参数 ,那这个接口参数怎么和类的变量结合在一起呢? 比如: interface A { public void aa(B b); } class C { A a = null; B b = null; public void C(){ b = new B(); } public void setListener( A a){ this.a = a; } public void printThis(){ a.aa(b); } } class B { public void B(){ System.out.println("B"); } public void printThis(){ System.out.println("I'm B"); } } public class Test(){ public static void main(String[] args){ C c = new C(); c.setListener(new A(){ public void aa(B b){ b.printThis();//问题来了,这个地方的b是刚刚申明的,而且还没有实例化,如何才能将值付给它呢? } }); c.printThsi(); } } 我在使用高德地图的时候,就有这样的例子 AMapLocationListener mAMapLocationListener = new AMapLocationListener(){ @Override public void onLocationChanged(AMapLocation amapLocation) { String str = ""; TextView p1 = (TextView)findViewById(R.id.textView1); if (amapLocation != null) { Log.v("test info","amapLocation 不是空"); if (amapLocation.getErrorCode() == 0) { Log.v("test info","amapLocation 成功"); //定位成功回调信息,设置相关消息 amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表 amapLocation.getLatitude();//获取纬度 amapLocation.getLongitude();//获取经度 amapLocation.getAccuracy();//获取精度信息 } } 这里的amapLocation是在什么时候获得的值呢?
如何将百度地图API获取经纬度写成公有方法!
我使用的是百度地图API来获取经纬度坐标。但是我的程序里面有多个地方用到了经纬度。 所以我就想把这个获取经纬度的方法写成公共方法,但是遇到了问题。首先是我修改了一点的百度获取经纬度坐标的代码!MyLocition.activity package Dagaishang.Android; import java.util.HashMap; import java.util.Map; import Dagaishang.Android.Utility.CmpDistance; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.widget.TextView; import android.location.Location; import com.baidu.mapapi.BMapManager; import com.baidu.mapapi.LocationListener; public class MyLocation extends Activity { // 自己的经纬度坐标 private Double myPointX, myPointY; // 计算的两个经纬度之间的距离 private Double Distance; LocationListener mLocationListener = null;// create时注册此listener,Destroy时需要Remove Map<String, Object> myMap = new HashMap<String, Object>(); CmpDistance comDis = new CmpDistance(); String FriendPx; String FriendPy; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mylocation); // getLocationByBaidu("0", "0",this); } // FriendPx,FriendPy为好友的经纬度坐标,返回值为计算后的两个坐标的点的距离 String getLocationByBaidu(String PointY, String PonitY,Activity tontext) { FriendPx = PointY; FriendPy = PonitY; BMapApiDemoApp app = (BMapApiDemoApp)tontext.getApplication(); if (app.mBMapMan == null) { app.mBMapMan = new BMapManager(this.getApplication()); app.mBMapMan.init(app.mStrKey, new BMapApiDemoApp.MyGeneralListener()); } app.mBMapMan.start(); // 注册定位事件 mLocationListener = new LocationListener() { @Override public void onLocationChanged(Location location) { if (location != null) { myPointX = location.getLongitude(); myPointY = location.getLatitude(); Distance = comDis.GetLongDistance(myPointX, myPointY, Double.valueOf(FriendPx), Double.valueOf(FriendPy)); } } }; return String.valueOf(Distance); } @Override protected void onPause() { BMapApiDemoApp app = (BMapApiDemoApp) this.getApplication(); // 移除listener app.mBMapMan.getLocationManager().removeUpdates(mLocationListener); app.mBMapMan.stop(); super.onPause(); } @Override protected void onResume() { BMapApiDemoApp app = (BMapApiDemoApp) this.getApplication(); // 注册Listener app.mBMapMan.getLocationManager().requestLocationUpdates( mLocationListener); app.mBMapMan.start(); super.onResume(); } } 其中的getLocationByBaidu()就是我想要使用到的获取经纬度并计算两个点之间距离的方法了,但是其中 if (app.mBMapMan == null) 在其他地方调用的时候会报空指针错误。不知道是不是因为传递过来的Activity不对或者说这里的getlocation()没有获取到东西。 问题 1.是否是因为这个activity没有显示,所以 BMapApiDemoApp app = (BMapApiDemoApp)tontext.getApplication();没有能获取到东西。怎么解决这个问题呢? 2.是否有其他办法来解决获取经纬度坐标的问题,实在不行 我就只有在每个需要 用到经纬度的地方把上面的那个方法写到那个activity里面了(我试过那样可以),但是代码太冗余了,重复的很多。 谢谢您看完真诚的解答!
“构造一个虚拟位置信息给谷歌地图,让其定位错误”失败
用以下代码“构造一个虚拟位置信息给谷歌地图,让其定位错误”无法实现,给位大神指点迷津,小弟开始研究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); } } } }
使用Android studio实现简单的GPS定位,为什么真机上不显示定位信息?
布局界面 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:orientation="vertical" > <TextView android:textColor="#ff00ff" android:textSize="40sp" android:id="@+id/tv0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="您的定位信息:" /> <TextView android:textColor="#ff00ff" android:textSize="40sp" android:id="@+id/tv1" android:text="xinxi" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> MainActivity.java界面: package com.example.gps3; import android.Manifest; import android.content.pm.PackageManager; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView textView; LocationManager manager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.tv1); manager = (LocationManager) getSystemService(LOCATION_SERVICE); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 8, new LocationListener() { @Override public void onLocationChanged(Location location) { updateLocation(location); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } }); } public void updateLocation(Location location){ textView.setText(""); textView.append("经度是:"+location.getLongitude()); textView.append("\n纬度是:"+location.getLatitude()); textView.append("\n高度:"+location.getAltitude()); textView.append("\n方向:"+location.getBearing()); textView.append("\n速度:"+location.getSpeed()); } } 为什么我的第二个TextView不显示定位信息? 谢谢,第一次提问,排版不好,还请见谅!
gps定位requestLocationUpdates第四个参数写什么?
我是新手 自学 改代码按照视频里写的 视频里代码没问题 到我这就有问题:locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000,100,this); 这里的this 有问题 换成什么参数都有问题 写成this 的话 整行代码都有红线! 请大神帮忙! ``` package fragment; import android.content.Context; import android.content.Intent; import android.location.Address; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.provider.Settings; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; ; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.luao2.jiemianzhuantiao.R; import com.lidroid.xutils.ViewUtils; import org.xutils.view.annotation.ViewInject; import java.io.IOException; import java.util.List; import luao2.utils.SharedUtils; /** * Created by Administrator on 2017/4/4. */ public class FragmentHome extends Fragment implements LocationListener{ @ViewInject(R.id.index_top_city) private TextView topCity; private String cityName; //当前城市名称 private LocationManager locationManager; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.home_index, null); ViewUtils.inject(this,view); //获取数据并显示 return view; } @Override public void onStart() { super.onStart(); //检查当前的GPS模块 checkGPSIsOpen(); } private void checkGPSIsOpen(){ //获取当前的LocationManager对象 locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); boolean isOpen = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); if (!isOpen){ //进入GPS的设置页面 Intent intent = new Intent(); intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivityForResult(intent,0); } //开始定位 startLocation(); } //使用GPS定位的方法 private void startLocation(){ locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000,100,this); } //接收并且处理消息 private Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { if (msg.what == 1){ topCity.setText(cityName); } return false; } }); //获取对应位置的经纬度并且定位城市 private void updateWithNewLocation(Location location){ double lat = 0.0,lng = 0.0; if (location !=null){ lat = location.getLatitude(); lng = location.getLongitude(); Log.i("TAG","经度是"+lat+"纬度是:"+lng); }else { cityName = "无法获取城市信息"; } //通过经纬度获取地址,由于地址会有多个,这个和经纬度精确度有关,本实例中定义了最大的返回数2,即在集合对象中有两个值 List<Address> list = null; Geocoder ge = new Geocoder(getActivity()); try { list = ge.getFromLocation(lat,lng,2); } catch (IOException e) { e.printStackTrace(); } if (list !=null && list.size()>0){ for (int i = 0; i < list.size(); i++){ Address ad = list.get(i); cityName = ad.getLocality();//获取城市 } } //发送一条空消息 handler.sendEmptyMessage(1); } //位置信息更改执行方法 @Override public void onLocationChanged(Location location) { //更新当前的位置信息 updateWithNewLocation(location); } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onDestroy() { super.onDestroy(); //保存城市 //停止定位 stopLocation(); } //停止定位 private void stopLocation(){ locationManager.removeUpdates(this); } } ```
有木有对百度地图API有研究的大神呀
用的是百度地图V1.3.5的sdk,现在一运行就卡死在这边,求帮忙~ startMapType(); // 注册定位事件 mLocationListener = new LocationListener() { @Override public void onLocationChanged(Location location) { if (location != null) { myPt = new GeoPoint((int) (location.getLatitude() * 1e6), (int) (location.getLongitude() * 1e6)); mkSearch.reverseGeocode(myPt); if (toMypt) { mapView.getController().animateTo(myPt); toMypt = false; } switch ((Integer) appointmentDemo.get("type")) { case 4: MKPlanNode start = new MKPlanNode(); start.pt = myPt; seachMap.put("start", start); break; } } } }; }
GPS定位:locationManager.requestLocationUpdates()报错
我是新手 自学 改代码按照视频里写的 视频里代码没问题 到我这就有问题:locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000,100,this); 整行代码都有红线! 本页代码跟视频里一模一样http://v.youku.com/v_show/id_XMTYyMDIwNTgzNg==.html?f=27510286&o=0&firsttime=187&spm=a2hfx.8251854.recordContent.DL~DD~5~5!11~5~A 请大神帮忙看看视频! ``` package fragment; import android.content.Context; import android.content.Intent; import android.location.Address; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.provider.Settings; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; ; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.luao2.jiemianzhuantiao.R; import com.lidroid.xutils.ViewUtils; import org.xutils.view.annotation.ViewInject; import java.io.IOException; import java.util.List; import luao2.utils.SharedUtils; /** * Created by Administrator on 2017/4/4. */ public class FragmentHome extends Fragment implements LocationListener{ @ViewInject(R.id.index_top_city) private TextView topCity; private String cityName; //当前城市名称 private LocationManager locationManager; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.home_index, null); ViewUtils.inject(this,view); //获取数据并显示 return view; } @Override public void onStart() { super.onStart(); //检查当前的GPS模块 checkGPSIsOpen(); } private void checkGPSIsOpen(){ //获取当前的LocationManager对象 locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); boolean isOpen = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); if (!isOpen){ //进入GPS的设置页面 Intent intent = new Intent(); intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivityForResult(intent,0); } //开始定位 startLocation(); } //使用GPS定位的方法 private void startLocation(){ locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000,100,this); } //接收并且处理消息 private Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { if (msg.what == 1){ topCity.setText(cityName); } return false; } }); //获取对应位置的经纬度并且定位城市 private void updateWithNewLocation(Location location){ double lat = 0.0,lng = 0.0; if (location !=null){ lat = location.getLatitude(); lng = location.getLongitude(); Log.i("TAG","经度是"+lat+"纬度是:"+lng); }else { cityName = "无法获取城市信息"; } //通过经纬度获取地址,由于地址会有多个,这个和经纬度精确度有关,本实例中定义了最大的返回数2,即在集合对象中有两个值 List<Address> list = null; Geocoder ge = new Geocoder(getActivity()); try { list = ge.getFromLocation(lat,lng,2); } catch (IOException e) { e.printStackTrace(); } if (list !=null && list.size()>0){ for (int i = 0; i < list.size(); i++){ Address ad = list.get(i); cityName = ad.getLocality();//获取城市 } } //发送一条空消息 handler.sendEmptyMessage(1); } //位置信息更改执行方法 @Override public void onLocationChanged(Location location) { //更新当前的位置信息 updateWithNewLocation(location); } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onDestroy() { super.onDestroy(); //保存城市 //停止定位 stopLocation(); } //停止定位 private void stopLocation(){ locationManager.removeUpdates(this); } } ```
Android经纬度获取不到?
权限: ``` uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" uses-permission android:name="android.permission.INTERNET" ``` 代码: ``` @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); editText = (EditText) findViewById(R.id.editText); lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 为获取地理位置信息时设置查询条件 String bestProvider = lm.getBestProvider(getCriteria(), true); // 获取位置信息 // 如果不设置查询要求,getLastKnownLocation方法传人的参数为LocationManager.GPS_PROVIDER Location location = lm.getLastKnownLocation(bestProvider); updateView(location); // 监听状态 lm.addGpsStatusListener(listener); // 绑定监听,有4个参数 // 参数1,设备:有GPS_PROVIDER和NETWORK_PROVIDER两种 // 参数2,位置信息更新周期,单位毫秒 // 参数3,位置变化最小距离:当位置距离变化超过此值时,将更新位置信息 // 参数4,监听 // 备注:参数2和3,如果参数3不为0,则以参数3为准;参数3为0,则通过时间来定时更新;两者为0,则随时刷新 // 1秒更新一次,或最小位移变化超过1米更新一次; // 注意:此处更新准确度非常低,推荐在service里面启动一个Thread,在run中sleep(10000);然后执行handler.sendMessage(),更新位置 if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) { lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, locationListener); Log.i("gps123", "gps定位location=" + location); } else { lm.requestLocationUpdates(bestProvider, 1000, 1, locationListener); Log.i("gps123", "网络定位 location=" + location); } } // 位置监听 private LocationListener locationListener = new LocationListener() { /** * 位置信息变化时触发 */ @Override public void onLocationChanged(Location location) { updateView(location); Log.i(TAG, "时间:" + location.getTime()); Log.i(TAG, "经度:" + location.getLongitude()); Log.i(TAG, "纬度:" + location.getLatitude()); Log.i(TAG, "海拔:" + location.getAltitude()); } /** * GPS状态变化时触发 */ @Override public void onStatusChanged(String provider, int status, Bundle extras) { switch (status) { // GPS状态为可见时 case LocationProvider.AVAILABLE: Log.i(TAG, "当前GPS状态为可见状态"); break; // GPS状态为服务区外时 case LocationProvider.OUT_OF_SERVICE: Log.i(TAG, "当前GPS状态为服务区外状态"); break; // GPS状态为暂停服务时 case LocationProvider.TEMPORARILY_UNAVAILABLE: Log.i(TAG, "当前GPS状态为暂停服务状态"); break; } } /** * GPS开启时触发 */ @Override public void onProviderEnabled(String provider) { Location location = lm.getLastKnownLocation(provider); Log.i(TAG, "开启 " + location); updateView(location); } /** * GPS禁用时触发 */ @Override public void onProviderDisabled(String provider) { Location location = lm.getLastKnownLocation(provider); Log.i(TAG, "关闭 " + location); updateView(location); } }; // 状态监听 GpsStatus.Listener listener = new GpsStatus.Listener() { @Override public void onGpsStatusChanged(int event) { switch (event) { // 第一次定位 case GpsStatus.GPS_EVENT_FIRST_FIX: Log.i(TAG, "第一次定位"); break; // 卫星状态改变 case GpsStatus.GPS_EVENT_SATELLITE_STATUS: Log.i(TAG, "卫星状态改变"); // 获取当前状态 GpsStatus gpsStatus = lm.getGpsStatus(null); // 获取卫星颗数的默认最大值 int maxSatellites = gpsStatus.getMaxSatellites(); // 创建一个迭代器保存所有卫星 Iterator<GpsSatellite> iters = gpsStatus.getSatellites() .iterator(); int count = 0; while (iters.hasNext() && count <= maxSatellites) { // GpsSatellite s = iters.next(); iters.next(); count++; } System.out.println("搜索到:" + count + "颗卫星"); break; // 定位启动 case GpsStatus.GPS_EVENT_STARTED: Log.i(TAG, "定位启动"); break; // 定位结束 case GpsStatus.GPS_EVENT_STOPPED: Log.i(TAG, "定位结束"); break; } }; }; /** * 实时更新文本内容 * * @param location */ private void updateView(Location location) { if (location != null) { editText.setText("设备位置信息\n\n经度:"); editText.append(String.valueOf(location.getLongitude())); editText.append("\n纬度:"); editText.append(String.valueOf(location.getLatitude())); Geocoder geo = new Geocoder(this); try { List<Address> list = geo.getFromLocation( location.getLatitude(), location.getLongitude(), 1); if (!list.isEmpty()) { String country = list.get(0).getCountryName(); String address = list.get(0).getAddressLine(0); editText.append("\n国家:" + country + "\n地址:" + address); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { // 清空EditText对象 // editText.getEditableText().clear(); editText.setText("没有收到信号"); lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 1, locationListener); } } /** * 返回查询条件 * * @return */ private Criteria getCriteria() { Criteria criteria = new Criteria(); // 设置定位精确度 Criteria.ACCURACY_COARSE比较粗略,Criteria.ACCURACY_FINE则比较精细 criteria.setAccuracy(Criteria.ACCURACY_FINE); // 设置是否要求速度 criteria.setSpeedRequired(false); // 设置是否允许运营商收费 criteria.setCostAllowed(false); // 设置是否需要方位信息 criteria.setBearingRequired(false); // 设置是否需要海拔信息 criteria.setAltitudeRequired(false); // 设置对电源的需求 criteria.setPowerRequirement(Criteria.POWER_LOW); return criteria; } ```
dps定位requestLocationUpdates第四个参数些什么?
我是新手 自学 改代码按照视频里写的 视频里代码没问题 到我这就有问题:locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000,100,this); 这里的this 有问题 换成什么参数都有问题 写成this 的话 整行代码都有红线! 请大神帮忙! ``` package fragment; import android.content.Context; import android.content.Intent; import android.location.Address; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.provider.Settings; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; ; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.luao2.jiemianzhuantiao.R; import com.lidroid.xutils.ViewUtils; import org.xutils.view.annotation.ViewInject; import java.io.IOException; import java.util.List; import luao2.utils.SharedUtils; /** * Created by Administrator on 2017/4/4. */ public class FragmentHome extends Fragment implements LocationListener{ @ViewInject(R.id.index_top_city) private TextView topCity; private String cityName; //当前城市名称 private LocationManager locationManager; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.home_index, null); ViewUtils.inject(this,view); //获取数据并显示 return view; } @Override public void onStart() { super.onStart(); //检查当前的GPS模块 checkGPSIsOpen(); } private void checkGPSIsOpen(){ //获取当前的LocationManager对象 locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); boolean isOpen = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); if (!isOpen){ //进入GPS的设置页面 Intent intent = new Intent(); intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivityForResult(intent,0); } //开始定位 startLocation(); } //使用GPS定位的方法 private void startLocation(){ locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000,100,this); } //接收并且处理消息 private Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { if (msg.what == 1){ topCity.setText(cityName); } return false; } }); //获取对应位置的经纬度并且定位城市 private void updateWithNewLocation(Location location){ double lat = 0.0,lng = 0.0; if (location !=null){ lat = location.getLatitude(); lng = location.getLongitude(); Log.i("TAG","经度是"+lat+"纬度是:"+lng); }else { cityName = "无法获取城市信息"; } //通过经纬度获取地址,由于地址会有多个,这个和经纬度精确度有关,本实例中定义了最大的返回数2,即在集合对象中有两个值 List<Address> list = null; Geocoder ge = new Geocoder(getActivity()); try { list = ge.getFromLocation(lat,lng,2); } catch (IOException e) { e.printStackTrace(); } if (list !=null && list.size()>0){ for (int i = 0; i < list.size(); i++){ Address ad = list.get(i); cityName = ad.getLocality();//获取城市 } } //发送一条空消息 handler.sendEmptyMessage(1); } //位置信息更改执行方法 @Override public void onLocationChanged(Location location) { //更新当前的位置信息 updateWithNewLocation(location); } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onDestroy() { super.onDestroy(); //保存城市 //停止定位 stopLocation(); } //停止定位 private void stopLocation(){ locationManager.removeUpdates(this); } } ```
如何获取用户的当前位置?
我想根据 Network Provider 获取用户的当前位置,但是没有成功,UpdateLocation()方法也没有被调用。 如何获取用户的当前位置? public void UpdateLocation(Location location) { GeoPoint geoPoint = new GeoPoint((int)(location.getLatitude() * 1E6),(int)(location.getLongitude() * 1E6)); MapController controller = mapView.getController(); controller.setCenter(geoPoint); } public void GetLocation() { // Acquire a reference to the system Location Manager LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); // Define a listener that responds to location updates LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { // Called when a new location is found by the network location provider. UpdateLocation(location); } public void onStatusChanged(String provider, int status, Bundle extras) {} public void onProviderEnabled(String provider) {} public void onProviderDisabled(String provider) {} }; // Register the listener with the Location Manager to receive location updates locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); }
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
使用 Docker 部署 Spring Boot 项目
Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下。首先构建一个简单的 S...
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
redis分布式锁,面试官请随便问,我都会
文章有点长并且绕,先来个图片缓冲下! 前言 现在的业务场景越来越复杂,使用的架构也就越来越复杂,分布式、高并发已经是业务要求的常态。像腾讯系的不少服务,还有CDN优化、异地多备份等处理。 说到分布式,就必然涉及到分布式锁的概念,如何保证不同机器不同线程的分布式锁同步呢? 实现要点 互斥性,同一时刻,智能有一个客户端持有锁。 防止死锁发生,如果持有锁的客户端崩溃没有主动释放锁,也要保证锁可以正常释...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Java世界最常用的工具类库
Apache Commons Apache Commons有很多子项目 Google Guava 参考博客
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
Android 9.0 init 启动流程
阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一、启动流程概述一、 启动流程概述Android启动流程跟Linux启动类似,大致分为如下五个阶段。1.开机上电,加载固化的ROM。2.加载BootLoader,拉起Android OS。3.加载Uboot,初始外设,引导Kernel启动等。...
相关热词 c#委托 逆变与协变 c#新建一个项目 c#获取dll文件路径 c#子窗体调用主窗体事件 c# 拷贝目录 c# 调用cef 网页填表c#源代码 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天
立即提问