zoukankan      html  css  js  c++  java
  • 体温上报系统总结

    package com.example.myapplication4;
    
    
    import android.Manifest;
    import android.annotation.TargetApi;
    import android.app.Activity;
    import android.content.ContentValues;
    import android.content.Context;
    import android.content.SharedPreferences;
    import android.content.pm.PackageManager;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Build;
    import android.os.Bundle;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    import com.baidu.location.BDAbstractLocationListener;
    import com.baidu.location.BDLocation;
    import com.baidu.mapapi.SDKInitializer;
    import com.example.myapplication4.service.DatabaseHelper;
    import com.example.myapplication4.service.LocationApplication;
    import com.example.myapplication4.service.LocationService;
    
    import java.util.ArrayList;
    import java.util.Calendar;
    
    
    public class MainActivity extends Activity {
        private final int SDK_PERMISSION_REQUEST =127;
        private LocationService locationService;
        private EditText etTime;
        private SharedPreferences sharedPreferences;
        private Button startLocation;
        private Button putDatabase;
        private EditText etName;
        private EditText etTemper;
        private EditText etPosition;
        private EditText date;
        private EditText etDate;
        private DatabaseHelper dbHelper;
        private Button reacherDatabase;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            SDKInitializer.initialize(getApplicationContext());
            setContentView(R.layout.activity_main);
            date=findViewById(R.id.date);
            date.setText(DateUtil.getNowDateTime());
            getPersimmions();
            dbHelper = new DatabaseHelper(this, "TTList.db");
            dbHelper.getWritableDatabase();
            etName=findViewById(R.id.et1);
            etTemper=findViewById(R.id.et2);
            etDate=findViewById(R.id.date);
            etPosition=findViewById(R.id.et3);
            putDatabase = findViewById(R.id.but1);
            reacherDatabase = findViewById(R.id.but2);
            startLocation=findViewById(R.id.dingwei);
            initData();
            initUI();
        }
    
      private void initData(){
            if(sharedPreferences==null){
                sharedPreferences=getApplicationContext().getSharedPreferences("config", Context.MODE_PRIVATE);
            }
            etName.setText(sharedPreferences.getString("et1",""));
            etTemper.setText(sharedPreferences.getString("et2",""));
    
            etPosition.setText(sharedPreferences.getString("et3",""));
            Log.i("MainActivity","已自动填写");
        }
        private String getDate(){
            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);
            String newDate=year+"-"+month+"-"+day;
            System.out.println(newDate);
            return  newDate;
        }
        private void initUI(){
            etName.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                }
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
    
                }
                @Override
                public void afterTextChanged(Editable s) {
                    if(sharedPreferences==null){
                        sharedPreferences=getApplicationContext().getSharedPreferences("config", Context.MODE_PRIVATE);
                    }
                    SharedPreferences.Editor edit=sharedPreferences.edit();
                    edit. putString("Name",etName.getText().toString());
                    edit.commit();
                }
            });
            etTemper.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                }
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
    
                }
                @Override
                public void afterTextChanged(Editable s) {
                    if(sharedPreferences==null){
                        sharedPreferences=getApplicationContext().getSharedPreferences("config", Context.MODE_PRIVATE);
                    }
                    SharedPreferences.Editor edit=sharedPreferences.edit();
                    edit. putString("Temper",etTemper.getText().toString());
                    edit.commit();
                }
            });
            etPosition.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                }
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
    
                }
                @Override
                public void afterTextChanged(Editable s) {
                    if(sharedPreferences==null){
                        sharedPreferences=getApplicationContext().getSharedPreferences("config", Context.MODE_PRIVATE);
                    }
                    SharedPreferences.Editor edit=sharedPreferences.edit();
                    edit. putString("Position",etPosition.getText().toString());
                    edit.commit();
                }
            });
            putDatabase.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    SQLiteDatabase db=dbHelper.getWritableDatabase();
                    ContentValues values=new  ContentValues();
                    String name=etName.getText().toString();//获取名字信息
                    String temper=etTemper.getText().toString();//获取体温信息
                    String date=etDate.getText().toString();//获取日期信息
                    String position=etPosition.getText().toString();//获取位置信息
                    values.put("姓名",name);
                    values.put("日期",date);
                    values.put("位置",position);
                    values.put("体温",temper);
    
                    if(name.equals("")||temper.equals("")||date.equals("")||position.equals(""))
                    {
                        Toast.makeText(com.example.myapplication4.MainActivity.this, "信息不全,请补充", Toast.LENGTH_SHORT).show();
                    }
                    else{
                        System.out.println(date);
                        db.insert("TTList",null,values);
                        values.clear(); //注意别漏掉
                        Toast.makeText(com.example.myapplication4.MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
                        etDate.getText().clear();
                    }
                }
            });
            startLocation.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v){
    
                }
            });
        }
    
    
        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();
            }
            startLocation.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
    
                    if (startLocation.getText().toString().equals("定位")) {
                        locationService.start();// 定位SDK
                        // start之后会默认发起一次定位请求,开发者无须判断isstart并主动调用request
                        startLocation.setText("停止定位");
                    } else {
                        locationService.stop();
                        startLocation.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) {
                    if(location.getAddrStr() !=null) {
                        System.out.println(location.getAddrStr());
                        etPosition.setText(location.getAddrStr() );
                        locationService.stop();
                        startLocation.setText("定位");
                    }
                    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("无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机");
                    }
                }
            }
        };
    }

    以上是mainactivity 代码

    下面是xml页面代码

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingTop="20dp">
    
        <TextView
            android:id="@+id/top"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="每日报表"
            android:textStyle="bold"
            android:gravity="center"
            android:textColor="#F44336"
            android:textSize="50sp"
            />
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingTop="20dp">
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="姓名:"
                    android:textSize="20dp"
                    android:paddingLeft="80dp"
                    />
    
                <EditText
                    android:id="@+id/et1"
                    android:background="@drawable/de_user"
                    android:layout_toRightOf="@id/et1"
                    android:layout_width="150dp"
                    android:layout_height="wrap_content" />
            </LinearLayout>
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:paddingTop="20dp">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="体温:"
                    android:textSize="20dp"
                    android:paddingLeft="80dp"
                    />
    
                <EditText
                    android:id="@+id/et2"
                    android:background="@drawable/de_user"
                    android:layout_toRightOf="@id/et2"
                    android:layout_width="150dp"
                    android:layout_height="wrap_content" />
            </LinearLayout>
    
            <LinearLayout
                android:id="@+id/RadioGroup2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:paddingTop="20dp">
    
                <TextView
    
                    android:layout_toRightOf="@id/date"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="日期:"
                    android:textSize="20dp"
                    android:paddingLeft="80dp"/>
                <EditText
                    android:id="@+id/date"
                    android:hint="系统自动生成日期"
                    android:background="@drawable/de_user"
                    android:layout_toRightOf="@id/date"
                    android:layout_width="wrap_content"
                    android:maxLines="1"
                    android:layout_height="wrap_content" />
            </LinearLayout>
    
            <LinearLayout
                android:id="@+id/text_4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/date"
                android:orientation="horizontal"
                android:paddingTop="20dp">
                <TextView
                    android:id="@+id/position"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="位置:"
                    android:textSize="20dp"
                    android:paddingLeft="80dp"
                    />
                <EditText
                    android:id="@+id/et3"
                    android:layout_toRightOf="@+id/position"
                    android:hint="点击右侧按钮获取位置"
                    android:background="@drawable/de_user"
                    android:layout_width="match_parent"
                    android:layout_height="80dp"
                    />
                <Button
                    android:id="@+id/dingwei"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="定位"
                    android:layout_alignParentRight="true"
                    android:textSize="20dp"/>
            </LinearLayout>
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:paddingLeft="120dp"
                android:paddingTop="20dp">
    
                <Button
                    android:id="@+id/but1"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:text="保存"
                    android:textSize="30dp"
                    android:layout_centerVertical="true"
                    android:layout_centerHorizontal="true"
                    />
    
                <Button
                    android:id="@+id/but2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="查询"
                    android:textSize="30dp"
                    android:layout_centerVertical="true"
                    android:layout_centerHorizontal="true"
                    />
    
            </LinearLayout>
    
            <TextView
                android:id="@+id/info"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>
    
    </LinearLayout>

    界面非常简单如果想加入一些图片或者图标

    可以添加到drawable里,然后调用图片即可

    在开发过程中需要注意一下几点问题:(本人遇到问题较多)

    1.build gradle中android里需要声明

    sourceSets {

    main() {

    jniLibs.srcDirs = ['libs']

    }

    }
    否则会导致app闪退,点不开等情况
    2.manife里一定要有以下声明 否则无法获取定位(本人使用百度地图api)
    <!-- 声明service组件 -->
    <service
    android:name="com.baidu.location.f"
    android:enabled="true"
    android:process=":remote" />
    <!-- AK鉴权 -->
    <meta-data
    android:name="com.baidu.lbsapi.API_KEY"
    android:value="2N8xydK1CHyShBGxYhMkzTP0jRsVv9Lh" /> <!-- http://lbsyun.baidu.com/apiconsole/key -->
    标红字段需要自己去获取自己的ak ,官网有教学。
    3.虚拟机定位点击后无法定位,是由于电脑没有gps定位,需要使用真机模拟,手动授权,然后即可定位。
    下面附上我app的界面,后续我会完善app发至github。

     明天继续写家庭记账本

  • 相关阅读:
    DateUtil(比较两个日期是否是同一天)
    用过的读写
    小笔记
    日志解析LogParse启动参数配置
    wow经典台词
    Quartz资源收藏
    Quartz Job基本示例
    已知两点坐标,及在从其中一点开始移动的距离,求移动到的坐标
    如何为SUSE配置IP地址,网关和DNS
    详解Linux Initrd
  • 原文地址:https://www.cnblogs.com/1329197745a/p/14391848.html
Copyright © 2011-2022 走看看