个人作业一冲刺记录三
发布日期:2021.4.23
主要页面已经搭建好接下来就是主要功能实现的代码:
package com.example.temp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
/*
服务端
*/
public class MainActivity extends AppCompatActivity {
String name=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent=getIntent();
name=intent.getStringExtra("name");
setContentView(R.layout.activity_main);
Button bt_in=findViewById(R.id.bt_in);
bt_in.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,In_activity.class);
intent.putExtra("names",name);
startActivity(intent);
}
});
Button bt_out=findViewById(R.id.bt_out);
bt_out.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,Out_activity.class);
startActivity(intent);
}
});
}
}
package com.example.temp;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
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.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
/*
填写信息并获取事件与位置
*/
public class In_activity extends AppCompatActivity {
private Button bt_start; //开始定位
private TextView tv_locat; //定位地址
private Button btn;
private MyopenHelper helper; //数据库帮助
private EditText et_name; //姓名
private EditText et_temon; //体温
private TextView tv_time;
CheckBox ch1,ch2,ch3,ch4,ch5;
String con="";
LocationClient mLocationClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_in_activity);
ch1=findViewById(R.id.ch1);
ch2=findViewById(R.id.ch2);
ch3=findViewById(R.id.ch4);
ch5=findViewById(R.id.ch3);
ch4=findViewById(R.id.ch5);
et_name = (EditText) findViewById(R.id.et_name);
Intent intent=getIntent();
et_name.setText(intent.getStringExtra("names"));
tv_locat=findViewById(R.id.tv_locat);
mLocationClient=new LocationClient(getApplicationContext());
mLocationClient.registerLocationListener(new myLocationListener());
//获取权限
List<String> permissionList=new ArrayList<>();
if(ContextCompat.checkSelfPermission(In_activity.this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED)
{
permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if(ContextCompat.checkSelfPermission(In_activity.this, Manifest.permission.READ_PHONE_STATE)!= PackageManager.PERMISSION_GRANTED)
{
permissionList.add(Manifest.permission.READ_PHONE_STATE);
}
if(ContextCompat.checkSelfPermission(In_activity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED)
{
permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
if(!permissionList.isEmpty())
{
String []premissions=permissionList.toArray(new String[permissionList.size()]);
ActivityCompat.requestPermissions(In_activity.this,premissions,1);
}
else {
requertLocation(); //请求定位
}
//------------------------------------------------
//定位时间;
et_temon = (EditText) findViewById(R.id.et_temon);
Calendar calendar = Calendar.getInstance();
//年
int year = calendar.get(Calendar.YEAR);
//月
int month = calendar.get(Calendar.MONTH) + 1;
//日
int day = calendar.get(Calendar.DAY_OF_MONTH);
//获取系统时间
//小时
int hour = calendar.get(Calendar.HOUR_OF_DAY);
//分钟
int minute = calendar.get(Calendar.MINUTE);
//秒
int second = calendar.get(Calendar.SECOND);
tv_time = findViewById(R.id.tv_time);
tv_time.setText(year + "年" + month + "月" + day + "日" + hour + ":" + minute + ":" + second);
helper = new MyopenHelper(this, "demoto.db", null, 1);
Button bt_tijiao = (Button) findViewById(R.id.bt_tijiao);
Log.e("TRE","提交监听开始执行");
bt_tijiao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ischecked();
//打开数据库
SQLiteDatabase readableDatabase = helper.getReadableDatabase();
//获取edittext数据
String text = et_name.getText().toString().trim();
String text2 = et_temon.getText().toString().trim();
String text4 = tv_time.getText().toString().trim();
String text5 = tv_locat.getText().toString().trim();
if (TextUtils.isEmpty(text) || TextUtils.isEmpty(text2) ) {
Toast.makeText(In_activity.this, "输入不能为空", Toast.LENGTH_SHORT).show();
} else {
String sql = "insert into info (name,temon,time,locat,condition) values('" + text + "','" + text2 + "','" + text4 + "','" + text5 + "','"+con+"')";
readableDatabase.execSQL(sql);
readableDatabase.close();
Toast.makeText(In_activity.this, "提交成功!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(In_activity.this, MainActivity.class);
finish();//结束当前活动
startActivity(intent);
}
}
});
//-----------------------------------------------
}
//-------------------------------------------------------------------------------------------------------
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode)
{
case 1:
if(grantResults.length>0)
{
for(int result:grantResults)
{
if(result!=PackageManager.PERMISSION_GRANTED){
Toast.makeText(In_activity.this,"必须同意所有请求",Toast.LENGTH_SHORT).show();
finish();
return;
}
}
requertLocation();
}
else {
Toast.makeText(In_activity.this,"发生未知问题",Toast.LENGTH_SHORT).show();
finish();
}
break;
}
}
public void requertLocation()
{
initLocation();
mLocationClient.start();
}
public void initLocation()
{
LocationClientOption option=new LocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
option.setCoorType("bd0911");
option.setScanSpan(2000);
option.setOpenGps(true);
option.setIgnoreKillProcess(false);
option.setIsNeedAddress(true);
mLocationClient.setLocOption(option);
}
private class myLocationListener extends BDAbstractLocationListener
{
@Override
public void onReceiveLocation(BDLocation bdLocation)
{
StringBuilder currentpostion=new StringBuilder();
/*
currentpostion.append("纬度:").append(bdLocation.getLatitude()).append("\n");
currentpostion.append("经度:").append(bdLocation.getLongitude()).append("\n");
currentpostion.append("国家:").append(bdLocation.getCountry()).append("\n");
currentpostion.append("省份:").append(bdLocation.getProvince()).append("\n");
currentpostion.append("市区:").append(bdLocation.getCity()).append("\n");
currentpostion.append("区:").append(bdLocation.getDistrict()).append("\n");
currentpostion.append("村镇:").append(bdLocation.getTown()).append("\n");
*/
currentpostion.append("地址").append(bdLocation.getAddrStr()).append("\n");
tv_locat.setText(currentpostion);
}
}
public void ischecked()
{
if(ch1.isChecked()==true)
{
con=con+ch1.getText().toString()+" ";
}
if(ch2.isChecked()==true)
{
con=con+ch2.getText().toString()+" ";
}
if(ch3.isChecked()==true)
{
con=con+ch3.getText().toString()+" ";
}
if(ch4.isChecked()==true)
{
con=con+ch4.getText().toString()+" ";
}
if(ch5.isChecked()==true)
{
con=con+ch5.getText().toString()+" ";
}
}
}
package com.example.temp;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
public class MyopenHelper extends SQLiteOpenHelper {
public MyopenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql="Create table info(name text,temon text,time text,locat text,condition text)";
db.execSQL(sql);
String sql2="Create table sign(name text,pass text,phone text)";
db.execSQL(sql2);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
package com.example.temp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class Out_activity extends AppCompatActivity {
/*
将数据库中的数据展示出来
*/
private ListView lv_list;
private ArrayList<Person> persons = new ArrayList<Person>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_out_activity);
lv_list = (ListView)findViewById(R.id.lv_list);
MyopenHelper helper = new MyopenHelper(this,"demoto.db",null,1);
SQLiteDatabase readableDatabase = helper.getReadableDatabase();
String sql = "select * from info";
Cursor curor = readableDatabase.rawQuery(sql , null);
//遍历查询到的结果
curor.moveToFirst();
int count=0;
while(curor.moveToNext()){
//创建person对象
Person person = new Person();
//根据列名 name 获取数据库中对应的值
String name = curor.getString(curor.getColumnIndex("name"));
//根据列名 phone 获取数据库中对应的值
String temon = curor.getString(curor.getColumnIndex("temon"));
String time = curor.getString(curor.getColumnIndex("time"));
String locat = curor.getString(curor.getColumnIndex("locat"));
//设置相应数据
person.setName(name);
person.setTemon(temon);
person.setTime(time);
person.setLocat(locat);
//把数据添加到集合
persons.add(person);
count++;
}
//list显示
//把数据适配器和listview绑定
lv_list.setAdapter(new MyAdapter());
//关闭游标
curor.close();
helper.close();
if(count!=0) {
Toast.makeText(this, "查询成功", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(this, "查询失败", Toast.LENGTH_SHORT).show();
}
lv_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//点击跳转
Intent intent =new Intent(Out_activity.this,MainActivity.class);
//启动填写页面
Person tem =persons.get(position);
intent.putExtra("name",tem.getName());
intent.putExtra("info", tem.getTime()+"\n"+tem.getLocat());
startActivity(intent);
}
});
}
private class MyAdapter extends BaseAdapter {
//返回要展示的数据集合的条目数
@Override
public int getCount() {
return persons.size();
}
//通过adapter传进来的posion(listview中条目的position)
//把它对应的数据集合中的对象返回来
@Override
public Object getItem(int position) {
return persons.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//①把布局文件转换为View对象 需要判断convertView是否为空
View view= null;
if(convertView == null){
//创建view对象
view = View.inflate(Out_activity.this, R.layout.item, null);
}else{
//复用旧的convertView
view = convertView;
}
//②找到要修改的控件的对象 注意要调用view.findViewById
TextView tv_name = (TextView)view.findViewById(R.id.tv_name);
TextView tv_tem = (TextView)view.findViewById(R.id.tv_tem);
TextView tv_time = (TextView)view.findViewById(R.id.tv_time);
TextView tv_loc = (TextView)view.findViewById(R.id.tv_locat);
//③ 设置数据
//3.1通过position 到数据集合中把要显示的数据找到
Person person = persons.get(position);
//3.2把要显示的内容展示到对应的View对象上
tv_name.setText(person.getName());
tv_tem.setText("体温:"+person.getTemon());
tv_time.setText("时间:"+person.getTime());
tv_loc.setText("位置:"+person.getLocat());
return view;
}
}
}
至此,整个项目基本完成。
浙公网安备 33010602011771号