haijiang
2018-07-17 63b87b529196c056fb4d96a58eded3936d3445f2
app/src/main/java/com/moral/screen/activity/MapActivity.java
@@ -1,8 +1,12 @@
package com.moral.screen.activity;
import android.Manifest;
import android.content.Intent;
import android.graphics.Point;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Looper;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
@@ -28,16 +32,23 @@
import com.moral.screen.model.DeviceBean;
import com.moral.screen.R;
import com.moral.screen.base.BaseActivity;
import com.moral.screen.update.UpdateManager;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import pub.devrel.easypermissions.AfterPermissionGranted;
import pub.devrel.easypermissions.EasyPermissions;
/**
 * Created by hjzhang on 2018/7/2.
 */
public class MapActivity extends BaseActivity {
    private TextView tv_left;
public class MapActivity extends BaseActivity implements EasyPermissions.PermissionCallbacks{
    private TextView tv_left,tv_right;
    private MapView bmapView;
    private BaiduMap mBaiduMap;
    BitmapDescriptor bdNormal = BitmapDescriptorFactory
@@ -57,6 +68,22 @@
    private ImageView iv_close;
    private LinearLayout ll_pop;
    private DeviceBean curDeviceBean;
    private Timer timer;
    /**
     * 计时器
     */
    private boolean isFinish = false;
    private void showData() {
        timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                if(!isFinish){
                    getData(false);
                }
            }
        },0,10*1000);
    }
    @Override
    protected void getBundleExtras(Bundle extras) {
@@ -70,6 +97,7 @@
    @Override
    protected void initViews() {
        tv_left = findView(R.id.tv_left);
        tv_right = findView(R.id.tv_right);
        bmapView = findView(R.id.bmapView);
        popView = LayoutInflater.from(this).inflate(R.layout.pop_layout,null);
        tv_name = popView.findViewById(R.id.tv_name);
@@ -102,17 +130,33 @@
                startActivity(intent);
            }
        });
        tv_right.setOnClickListener(this);
    }
    @Override
    protected void initData() {
        getData();
        getData(true);
        showData();
        /**
         * 版本更新
         */
        if (Build.VERSION.SDK_INT >= 11) {
            new checkUpdateTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
        } else {
            new checkUpdateTask().execute();
        }
    }
    @Override
    protected void processClick(View view) {
        switch (view.getId()){
            case R.id.tv_left:
                finish();
                break;
            case R.id.tv_right:
                MainApp.theApp.mSharedPreferencesUtil.exitLogin();
                Intent intent = new Intent(MapActivity.this,LoginActivity.class);
                startActivity(intent);
                finish();
                break;
        }
@@ -152,7 +196,7 @@
    /**
     * 标注地图
     */
    private void showMapData(){
    private void showMapData(boolean show){
        mBaiduMap.clear();
        MarkerOptions mo = null;
        Marker mMarker = null;
@@ -184,7 +228,8 @@
                        .zIndex(i);
            }
            // 掉下动画
            mo.animateType(MarkerOptions.MarkerAnimateType.drop);
            if(show)
               mo.animateType(MarkerOptions.MarkerAnimateType.grow);
            mMarker = (Marker) (mBaiduMap.addOverlay(mo));
            mkList.add(mMarker);
        }
@@ -211,12 +256,16 @@
        bdC.recycle();
        super.onDestroy();
        bmapView.onDestroy();
        if(timer!=null){
            timer.cancel();
            timer =null;
        }
    }
    private void getData() {
    private void getData(final boolean show) {
        HashMap<String, String> params = new HashMap<>();
        params.put("organizationId", MainApp.theApp.orgId+"");
        mHttpUtils.doGet(API.DEVICES, params, CacheMode.DEFAULT, true, new HttpCallBack() {
        mHttpUtils.doGet(API.DEVICES, params, CacheMode.DEFAULT, show, new HttpCallBack() {
            @Override
            public void onSuccess(String res, String msg) {
                if (progressDialog.isShowing()) {
@@ -227,15 +276,17 @@
                    deviceList.clear();
                    deviceList.addAll(temp);
                }
                if(deviceList.size()>0){
                    DeviceBean bean = deviceList.get(0);
                    LatLng ll = new LatLng(bean.getLatitude(),
                            bean.getLongitude());
                    MapStatus.Builder builder = new MapStatus.Builder();
                    builder.target(ll).zoom(18.0f);
                    mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
                if(show){
                    if(deviceList.size()>0){
                        DeviceBean bean = deviceList.get(0);
                        LatLng ll = new LatLng(bean.getLatitude(),
                                bean.getLongitude());
                        MapStatus.Builder builder = new MapStatus.Builder();
                        builder.target(ll).zoom(18.0f);
                        mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
                    }
                }
                showMapData();
                showMapData(show);
            }
            @Override
@@ -254,4 +305,57 @@
        });
    }
    @Override
    public void onPermissionsGranted(int requestCode, List<String> perms) {
        if (requestCode == WRITE_EXTERNAL_STORAGE) {
            manager.showNoticeDialog();
        }
    }
    @Override
    public void onPermissionsDenied(int requestCode, List<String> perms) {
    }
    private final static int WRITE_EXTERNAL_STORAGE = 0x01;
    @AfterPermissionGranted(WRITE_EXTERNAL_STORAGE)
    public void updateAPP() {
        String[] perms = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
        if (EasyPermissions.hasPermissions(this, perms)) {
            // Already have permission, do the thing
            manager.showNoticeDialog();
        } else {
            // Do not have permissions, request them now
            EasyPermissions.requestPermissions(this, "温馨提示,版本升级需要写存储权限!",
                    WRITE_EXTERNAL_STORAGE, perms);
        }
    }
    UpdateManager manager = new UpdateManager(MapActivity.this);
    private class checkUpdateTask extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... params) {
            Looper.prepare();
            // 检查软件更新
            manager.checkUpdateJson();
            Looper.loop();
            return null;
        }
        @Override
        protected void onPostExecute(String result) {
        }
        @Override
        protected void onPreExecute() {
        }
        @Override
        protected void onProgressUpdate(Void... values) {
        }
    }
}