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 \n";
}
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("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");
}
}
}
};
}