第二阶段冲刺第六天

今天基本实现了定位打卡功能,因为百度地图的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;
    }
}

}`

posted @   益百分  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示