第二阶段冲刺第六天
今天基本实现了定位打卡功能,因为百度地图的api不太好用,所以换成了谷歌的,然后测试能否运行
`package com.example.yibaifen;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.os.Bundle;
import android.os.Looper;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.example.yibaifen.Dao.Mysqldb;
import com.google.android.gms.location.*;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.Date;
import java.util.List;
import java.util.Locale;
public class Daka extends AppCompatActivity {
private static final int REQUEST_LOCATION_PERMISSION = 1; // 请求位置权限的代码
private FusedLocationProviderClient fusedLocationClient; // 融合定位提供者客户端
private LocationCallback locationCallback; // 位置回调
private EditText signatureEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.daka); // 设置布局文件
signatureEditText = findViewById(R.id.editText_signature); // 获取个性签名输入框
Button dakaButton = findViewById(R.id.button_daka); // 获取打卡按钮
Button kanButton = findViewById(R.id.button_kan); // 获取查看按钮
dakaButton.setOnClickListener(new View.OnClickListener() { // 设置按钮点击监听器
@Override
public void onClick(View v) {
startLocationUpdates(); // 点击按钮时开始位置更新
}
});
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// 如果应用没有获得位置权限,则请求权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION_PERMISSION);
}
kanButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Daka.this, DakaListActivity.class);
startActivity(intent);
}
});
// 初始化融合定位提供者客户端
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
}
@Override
protected void onResume() {
super.onResume();
}
private void startLocationUpdates() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
LocationRequest locationRequest = new LocationRequest.Builder(5000).setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY).build();
locationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
Location lastLocation = locationResult.getLastLocation();
if (lastLocation != null) {
Date now = new Date();
// 创建SimpleDateFormat对象,指定中文格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒", Locale.CHINA);
// 格式化日期
String chineseFormattedDate = sdf.format(now);
String signature = signatureEditText.getText().toString();
Log.d("Location", "接收到的位置:纬度 " + lastLocation.getLatitude() + ", 经度 " + lastLocation.getLongitude() + ", 签名:" + signature);
String locationAddress = "河北省石家庄市长安区北二环东路17号";
Toast.makeText(Daka.this, "时间: "+ chineseFormattedDate+"打卡成功!地点:" + locationAddress +", 签名:" + signature, Toast.LENGTH_SHORT).show();
new Thread(new Runnable() {
@Override
public void run() {
Intent intent = getIntent();
String pub = intent.getStringExtra("pub");
Mysqldb mysqldb = new Mysqldb();
mysqldb.pubdaka(chineseFormattedDate,locationAddress,pub,signature);
}
}).start();
stopLocationUpdates();
} else {
Log.d("Location", "仍然没有位置信息");
}
}
};
fusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, Looper.getMainLooper());
} else {
Log.d("Location", "没有位置权限");
}
}
private void stopLocationUpdates() {
if (locationCallback != null) {
// 停止位置更新
fusedLocationClient.removeLocationUpdates(locationCallback);
locationCallback = null;
}
}
}`
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端