个人作业冲刺(三)

package com.example.temperature;

import androidx.appcompat.app.AppCompatActivity;

import android.Manifest;
import android.annotation.TargetApi;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.example.temperature.bean.Info;
import com.example.temperature.db.DBManager;
import com.example.temperature.service.LocationService;

import java.util.ArrayList;
import java.util.Calendar;

public class AddInfoActicity extends AppCompatActivity {
    private static final int SDK_PERMISSION_REQUEST = 127;
    private LocationService locationService;
    private Button submit,position;
    private String t;
    private EditText name,time,address,temp,a,b,c;
    private CheckBox one,two,three,four,five;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add);
        DBManager.initDB(this);
        getPersimmions();
        initView();
        initData();
        three.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View V){
                boolean x=three.isChecked();
                if(x){
                    t=cb();
                    a.setVisibility(View.VISIBLE);
                }
                else
                    a.setVisibility(View.GONE);
            };
        });
        four.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View V){
                boolean x=four.isChecked();
                if(x){

                    b.setVisibility(View.VISIBLE);
                }
                else
                    b.setVisibility(View.GONE);
            };
        });
        five.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View V){
                System.out.println(t);
                boolean x=five.isChecked();
                if(x){
                    c.setVisibility(View.VISIBLE);
                }
                else
                    c.setVisibility(View.GONE);

            };
        });
        submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                t=cb();
                Info info =new Info();
                info.setName(name.getText().toString());
                info.setDate(time.getText().toString());
                info.setAddress(address.getText().toString());
                info.setTemperature(temp.getText().toString());
                info.setOther(t);
                DBManager.insertInfo(info);
                Toast.makeText(AddInfoActicity.this, "登记成功", Toast.LENGTH_LONG).show();
            }
        });
    }
    private void initData(){
        name.setText("韩佳作");
        temp.setText("36.2");
        time.setText(getTime());
    }
    public void initView(){
        name=(EditText)findViewById(R.id.et1);
        time=(EditText)findViewById(R.id.et2);
        address=(EditText)findViewById(R.id.et4);
        temp=(EditText)findViewById(R.id.et5);
        a=(EditText)findViewById(R.id.a);
        b=(EditText)findViewById(R.id.b);
        c=(EditText)findViewById(R.id.c);
        submit =(Button)findViewById(R.id.submit);
        one=findViewById(R.id.one);
        two=findViewById(R.id.two);
        three=findViewById(R.id.three);
        four=findViewById(R.id.four);
        five=findViewById(R.id.five);
        position=findViewById(R.id.huoqu);
    }

    private String getTime(){
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH)+1;
        int day = c.get(Calendar.DAY_OF_MONTH);
        int hour = c.get(Calendar.HOUR);
        int min = c.get(Calendar.MINUTE);
        String newTime=year+"-"+month+"-"+day+hour+":"+min;
        return  newTime;
    }


    public String cb(){
        boolean c1,c2,c3,c4,c5;
        c1=one.isChecked();
        c2=two.isChecked();
        c3=three.isChecked();
        c4=four.isChecked();
        c5=five.isChecked();
        String str="";
        if(c1){
            str+=one.getText().toString()+"/";
        }
        if(c2){
            str+=two.getText().toString()+"/";
        }
        if(c3){

            str+=""+a.getText().toString()+"/";
        }
        if(c4){

            str+=""+b.getText().toString()+"/";
        }
        if(c5){

            str+=""+c.getText().toString()+"/";
        }
        return str;
    }

    private void getPersimmions() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            ArrayList<String> permissions = new ArrayList<String>();

            // * 定位权限为必须权限,用户如果禁止,则每次进入都会申请
            // 定位精确位置

            if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
            }
            if (checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                permissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);
            }

            //  读写权限和电话状态权限非必要权限(建议授予)只会申请一次,用户同意或者禁止,只会弹一次
            // 读写权限

            if (addPermission(permissions, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
                String permissionInfo = "Manifest.permission.WRITE_EXTERNAL_STORAGE Deny 
";
            }
            if (permissions.size() > 0) {
                requestPermissions(permissions.toArray(new String[permissions.size()]), SDK_PERMISSION_REQUEST);
            }
        }
    }

    @TargetApi(23)
    private boolean addPermission(ArrayList<String> permissionsList, String permission) {
        // 如果应用没有获得对应权限,则添加到列表中,准备批量申请
        if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
            if (shouldShowRequestPermissionRationale(permission)) {
                return true;
            } else {
                permissionsList.add(permission);
                return false;
            }
        } else {
            return true;
        }
    }

    @TargetApi(23)
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        // TODO Auto-generated method stub
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }


    @Override
    protected void onStart() {
        super.onStart();
        // -----------location config ------------
        locationService = ((LocationApplication) getApplication()).locationService;
        //获取locationservice实例,建议应用中只初始化1个location实例,然后使用,可以参考其他示例的activity,都是通过此种方式获取locationservice实例的
        locationService.registerListener(mListener);
        //注册监听
        int type = getIntent().getIntExtra("from", 0);
        if (type == 0) {
            LocationService.setLocationOption(locationService.getDefaultLocationClientOption());
        } else if (type == 1) {
            locationService.start();
        }
        position.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (position.getText().toString().equals("定位")) {
                    locationService.start();// 定位SDK
                    // start之后会默认发起一次定位请求,开发者无须判断isstart并主动调用request
                    position.setText("停止定位");
                } else {
                    locationService.stop();
                    position.setText("定位");
                }
            }
        });
    }


    @Override
    protected void onStop() {
        locationService.unregisterListener(mListener); //注销掉监听
        locationService.stop(); //停止定位服务
        super.onStop();
    }
    private final BDAbstractLocationListener mListener = new BDAbstractLocationListener() {
        @Override
        public void onReceiveLocation(BDLocation location) {
            if (null != location && location.getLocType() != BDLocation.TypeServerError) {
                address.setText(location.getAddrStr() );
                if (location.getLocType() == BDLocation.TypeGpsLocation) {// GPS定位结果
                } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {// 网络定位结果
                    System.out.println("网络定位成功");
                } else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果
                    System.out.println("离线定位成功,离线定位结果也是有效的");
                } else if (location.getLocType() == BDLocation.TypeServerError) {
                    System.out.println("服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因");
                } else if (location.getLocType() == BDLocation.TypeNetWorkException) {
                    System.out.println("网络不同导致定位失败,请检查网络是否通畅");
                } else if (location.getLocType() == BDLocation.TypeCriteriaException) {
                    System.out.println("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");
                }
            }
        }
    };
}
原文地址:https://www.cnblogs.com/jz-no-bug/p/14908070.html