功能修改
This commit is contained in:
parent
1762a35971
commit
9a769ae9cd
|
|
@ -1,6 +1,7 @@
|
|||
package com.bonus.wrjtest
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.ProgressDialog
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
|
|
@ -58,6 +59,8 @@ class MainActivity : AppCompatActivity() {
|
|||
lateinit var sagEditText: EditText
|
||||
lateinit var hAngleText: EditText
|
||||
lateinit var vAngleText: EditText
|
||||
lateinit var positionText: EditText
|
||||
lateinit var spanText: EditText
|
||||
var handler: Handler = Handler(Looper.getMainLooper())
|
||||
|
||||
val resultDataSb = StringBuilder()
|
||||
|
|
@ -78,6 +81,12 @@ class MainActivity : AppCompatActivity() {
|
|||
|
||||
private var methodNum = 6
|
||||
|
||||
private var isPrint=0;
|
||||
|
||||
private var position="大号在右"
|
||||
// 定义一个全局的 ProgressDialog 变量
|
||||
private var progressDialog: ProgressDialog? = null
|
||||
|
||||
//GPS与雷达位置偏移常量切换
|
||||
// var gpsDistance = 0.28
|
||||
// var gpsAngle = 0.0
|
||||
|
|
@ -104,24 +113,28 @@ class MainActivity : AppCompatActivity() {
|
|||
sagEditText = findViewById(R.id.sag)
|
||||
hAngleText = findViewById(R.id.hAngle)
|
||||
vAngleText = findViewById(R.id.vAngle)
|
||||
|
||||
positionText = findViewById(R.id.position)
|
||||
spanText = findViewById(R.id.span)
|
||||
//创建通道
|
||||
createChannel()
|
||||
|
||||
|
||||
|
||||
findViewById<Button>(R.id.switchType).setOnClickListener {
|
||||
if (splitType == "01") {
|
||||
splitType = "02"
|
||||
span = 48.209
|
||||
// span = 48.209
|
||||
h = 4.136
|
||||
Toast.makeText(this, "切换至二分裂数据", Toast.LENGTH_LONG).show()
|
||||
} else if (splitType == "02") {
|
||||
splitType = "04"
|
||||
span = 47.991
|
||||
// span = 47.991
|
||||
// span = 45.23
|
||||
h = 4.125
|
||||
Toast.makeText(this, "切换至四分裂数据", Toast.LENGTH_LONG).show()
|
||||
} else {
|
||||
splitType = "01"
|
||||
span = 45.23
|
||||
// span = 45.23
|
||||
h = 0.139
|
||||
Toast.makeText(this, "切换至单分裂数据", Toast.LENGTH_LONG).show()
|
||||
}
|
||||
|
|
@ -129,20 +142,51 @@ class MainActivity : AppCompatActivity() {
|
|||
sensorDataList.clear()
|
||||
}
|
||||
|
||||
// findViewById<Button>(R.id.poll).setOnClickListener {
|
||||
// if (sensorDataBean.rollAngle>2 || sensorDataBean.rollAngle<-2){
|
||||
// Toast.makeText(this, "横滚角过大,请稳定后再保存", Toast.LENGTH_LONG).show()
|
||||
// return@setOnClickListener
|
||||
// }
|
||||
// Toast.makeText(this, "数据记录中。。。。。", Toast.LENGTH_LONG).show()
|
||||
// sensorDataList.add(sensorDataBean)
|
||||
// coordinatesList.add(coordinates)
|
||||
//
|
||||
// logger.log(sensorDataBean.toString(),isPrint)
|
||||
// for (coordinate in coordinates) {
|
||||
// logger.log(coordinate.toString(),isPrint)
|
||||
// }
|
||||
//
|
||||
// // 使用 Handler 计时一秒后执行
|
||||
// Handler(Looper.getMainLooper()).postDelayed({
|
||||
// if (sensorDataBean.rollAngle>2 || sensorDataBean.rollAngle<-2){
|
||||
// Toast.makeText(this, "横滚角过大,请稳定后再保存", Toast.LENGTH_LONG).show()
|
||||
// return@postDelayed
|
||||
// }
|
||||
// if (job != null) {
|
||||
// // 取消之前的任务
|
||||
// job?.cancel()
|
||||
// }
|
||||
// // 计时结束后执行的逻辑
|
||||
// sensorDataList.add(sensorDataBean)
|
||||
// coordinatesList.add(coordinates)
|
||||
//
|
||||
// logger.log(sensorDataBean.toString(), isPrint)
|
||||
// for (coordinate in coordinates) {
|
||||
// logger.log(coordinate.toString(), isPrint)
|
||||
// }
|
||||
//
|
||||
// Toast.makeText(this, "已保存数据", Toast.LENGTH_LONG).show()
|
||||
// isPrint = 0
|
||||
// sendMsg(3)
|
||||
// // 延迟 1000 毫秒(1 秒)
|
||||
// }, 3000)
|
||||
// }
|
||||
|
||||
findViewById<Button>(R.id.poll).setOnClickListener {
|
||||
if (job != null) {
|
||||
job?.cancel()
|
||||
}
|
||||
sensorDataList.add(sensorDataBean)
|
||||
coordinatesList.add(coordinates)
|
||||
|
||||
logger.log(sensorDataBean.toString())
|
||||
for (coordinate in coordinates) {
|
||||
logger.log(coordinate.toString())
|
||||
}
|
||||
|
||||
|
||||
Toast.makeText(this, "保存数据", Toast.LENGTH_LONG).show()
|
||||
// 显示加载提示
|
||||
showLoadingDialog()
|
||||
// 调用方法检查横滚角是否满足条件
|
||||
waitForRollAngleCondition()
|
||||
}
|
||||
|
||||
findViewById<Button>(R.id.clear).setOnClickListener {
|
||||
|
|
@ -155,6 +199,7 @@ class MainActivity : AppCompatActivity() {
|
|||
Toast.makeText(this, "清除数据", Toast.LENGTH_LONG).show()
|
||||
}
|
||||
findViewById<Button>(R.id.measure).setOnClickListener {
|
||||
isPrint=1;
|
||||
if (job != null) {
|
||||
job?.cancel()
|
||||
}
|
||||
|
|
@ -162,18 +207,28 @@ class MainActivity : AppCompatActivity() {
|
|||
getSag()
|
||||
}
|
||||
findViewById<Button>(R.id.switchMethod).setOnClickListener {
|
||||
if (methodNum == 6) {
|
||||
methodNum = 3
|
||||
if (position.equals("大号在右")) {
|
||||
position = "大号在左"
|
||||
positionText.setText("大号在左")
|
||||
} else {
|
||||
methodNum = 6
|
||||
position = "大号在右"
|
||||
positionText.setText("大号在右")
|
||||
}
|
||||
Toast.makeText(this, "切换计算方法为" + methodNum + "点弧垂测量法", Toast.LENGTH_LONG).show()
|
||||
Toast.makeText(this, "切换测量位置为:" + position, Toast.LENGTH_LONG).show()
|
||||
sendMsg(4)
|
||||
}
|
||||
findViewById<Button>(R.id.send1).setOnClickListener {
|
||||
Toast.makeText(this, "基础发送信息", Toast.LENGTH_LONG).show()
|
||||
sendMsg(1)
|
||||
if (spanText.getText().toString().isNotEmpty()) {
|
||||
span = spanText.getText().toString().toDouble()
|
||||
Toast.makeText(this, "基础发送信息", Toast.LENGTH_LONG).show()
|
||||
sendMsg(1)
|
||||
} else {
|
||||
Toast.makeText(this, "请输入档距", Toast.LENGTH_LONG).show()
|
||||
}
|
||||
|
||||
}
|
||||
findViewById<Button>(R.id.send2).setOnClickListener {
|
||||
isPrint=1;
|
||||
if (job != null) {
|
||||
job?.cancel()
|
||||
}
|
||||
|
|
@ -195,6 +250,82 @@ class MainActivity : AppCompatActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 定义一个方法用于等待横滚角满足条件
|
||||
*/
|
||||
private fun waitForRollAngleCondition() {
|
||||
if ((sensorDataBean.rollAngle > 1 || sensorDataBean.rollAngle < -1) && (sensorDataBean.pitchAngle > 3 || sensorDataBean.pitchAngle < -3)) {
|
||||
// 如果不满足条件,则每隔 1 秒递归调用自己,直到满足条件为止
|
||||
Handler(Looper.getMainLooper()).postDelayed({
|
||||
waitForRollAngleCondition()
|
||||
}, 500)
|
||||
return
|
||||
}
|
||||
|
||||
// 横滚角满足条件后,执行后续逻辑
|
||||
// Toast.makeText(this, "数据记录中。。。。。", Toast.LENGTH_LONG).show()
|
||||
sensorDataList.add(sensorDataBean)
|
||||
coordinatesList.add(coordinates)
|
||||
|
||||
logger.log(sensorDataBean.toString(), isPrint)
|
||||
println(sensorDataBean.toString())
|
||||
for (coordinate in coordinates) {
|
||||
logger.log(coordinate.toString(), isPrint)
|
||||
println(coordinate.toString())
|
||||
}
|
||||
|
||||
// 延迟 3 秒后再次检查横滚角
|
||||
Handler(Looper.getMainLooper()).postDelayed({
|
||||
checkRollAngleAndSave()
|
||||
}, 2000)
|
||||
}
|
||||
|
||||
/**
|
||||
* 定义一个方法用于检查横滚角并保存数据
|
||||
*/
|
||||
private fun checkRollAngleAndSave() {
|
||||
if ((sensorDataBean.rollAngle > 1 || sensorDataBean.rollAngle < -1) && (sensorDataBean.pitchAngle > 3 || sensorDataBean.pitchAngle < -3)) {
|
||||
// 如果不满足条件,则每隔 1 秒递归调用自己,直到满足条件为止
|
||||
Handler(Looper.getMainLooper()).postDelayed({
|
||||
checkRollAngleAndSave()
|
||||
}, 1000)
|
||||
return
|
||||
}
|
||||
|
||||
// 满足条件后保存数据
|
||||
sensorDataList.add(sensorDataBean)
|
||||
coordinatesList.add(coordinates)
|
||||
println(sensorDataBean.toString())
|
||||
logger.log(sensorDataBean.toString(), isPrint)
|
||||
for (coordinate in coordinates) {
|
||||
logger.log(coordinate.toString(), isPrint)
|
||||
println(coordinate.toString())
|
||||
}
|
||||
|
||||
|
||||
isPrint = 0
|
||||
sendMsg(3)
|
||||
|
||||
// 数据保存完成后,隐藏加载提示
|
||||
hideLoadingDialog()
|
||||
}
|
||||
|
||||
// 显示加载提示的方法
|
||||
private fun showLoadingDialog() {
|
||||
progressDialog = ProgressDialog(this).apply {
|
||||
setMessage("数据获取中,请稍候...")
|
||||
setCancelable(false) // 禁止用户手动关闭
|
||||
show()
|
||||
}
|
||||
}
|
||||
|
||||
// 隐藏加载提示的方法
|
||||
private fun hideLoadingDialog() {
|
||||
progressDialog?.dismiss()
|
||||
progressDialog = null
|
||||
Toast.makeText(this, "已保存数据", Toast.LENGTH_LONG).show()
|
||||
}
|
||||
|
||||
private fun createChannel() {
|
||||
// 创建通讯管道
|
||||
pipeline = PipelineManager.createPipeline()!!
|
||||
|
|
@ -244,9 +375,18 @@ class MainActivity : AppCompatActivity() {
|
|||
resultDataSb.clear()
|
||||
returnData.setText("激光雷达解析数据与分裂类型不匹配")
|
||||
}
|
||||
"F0000003" -> {
|
||||
resultDataSb.clear()
|
||||
// 需要传递 Context 的引用,例如使用 applicationContext
|
||||
Toast.makeText(
|
||||
applicationContext,
|
||||
"该无人机位置不合适,请调整",
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (resultDataSb.length == 96) {
|
||||
if (resultDataSb.length == 104) {
|
||||
//因为有分包现象,判断头尾
|
||||
if (resultDataSb.startsWith("F0F0F0") && resultDataSb.endsWith("CCDD")) {
|
||||
returnData.setText("")
|
||||
|
|
@ -264,20 +404,20 @@ class MainActivity : AppCompatActivity() {
|
|||
val angle3 = data.substring(24, 28)
|
||||
val distance4 = data.substring(28, 32)
|
||||
val angle4 = data.substring(32, 36)
|
||||
val pitchAngle1 = data.substring(36, 40)
|
||||
val rollAngle1 = data.substring(40, 44)
|
||||
val azimuthAngle1 = data.substring(44, 48)
|
||||
val lon = data.substring(48, 58)
|
||||
val lat = data.substring(58, 68)
|
||||
val h = data.substring(68, 74)
|
||||
val qual = data.substring(74, 76)
|
||||
val pitchAngle1 = data.substring(36, 44)
|
||||
val rollAngle1 = data.substring(44, 52)
|
||||
val azimuthAngle1 = data.substring(52, 56)
|
||||
val lon = data.substring(56, 66)
|
||||
val lat = data.substring(66, 76)
|
||||
val h = data.substring(76, 82)
|
||||
val qual = data.substring(82, 84)
|
||||
|
||||
val splitType = data.substring(76, 78)
|
||||
val splitType = data.substring(84, 86)
|
||||
val splitNum = Integer.parseInt(splitType)
|
||||
//水平角
|
||||
val hAngleNum = data.substring(78, 82)
|
||||
val hAngleNum = data.substring(86, 90)
|
||||
//垂直角
|
||||
val vAngleNum = data.substring(82, 86)
|
||||
val vAngleNum = data.substring(90, 94)
|
||||
|
||||
var radarDistance1: Double =
|
||||
ByteUtil.hexToDecimalInt(distance1).toDouble() / 1000.0
|
||||
|
|
@ -304,11 +444,13 @@ class MainActivity : AppCompatActivity() {
|
|||
RadarPointBean(radarAngle3, radarDistance3),
|
||||
RadarPointBean(radarAngle4, radarDistance4)
|
||||
)
|
||||
|
||||
var pitchAngle2: Double =
|
||||
ByteUtil.hexToDecimalInt(pitchAngle1).toDouble() / 100.0
|
||||
var rollAngle2: Double =
|
||||
ByteUtil.hexToDecimalInt(rollAngle1).toDouble() / 100.0
|
||||
// 解析俯仰角和横滚角
|
||||
var pitchAngle2: Double = ByteUtil.hexToSignedDecimalInt(pitchAngle1).toDouble() / 100.0
|
||||
var rollAngle2: Double = ByteUtil.hexToSignedDecimalInt(rollAngle1).toDouble() / 100.0
|
||||
// var pitchAngle2: Double =
|
||||
// ByteUtil.hexToDecimalInt(pitchAngle1).toDouble() / 100.0
|
||||
// var rollAngle2: Double =
|
||||
// ByteUtil.hexToDecimalInt(rollAngle1).toDouble() / 100.0
|
||||
var azimuthAngle2: Double =
|
||||
ByteUtil.hexToDecimalInt(azimuthAngle1).toDouble() / 100.0
|
||||
|
||||
|
|
@ -368,10 +510,10 @@ class MainActivity : AppCompatActivity() {
|
|||
// Toast.LENGTH_SHORT
|
||||
// ).show()
|
||||
//展示是水平方向的夹角
|
||||
radar1.setText("${radarDistance1}m, ${90-radarAngle1}°")
|
||||
radar2.setText("${radarDistance2}m, ${90-radarAngle2}°")
|
||||
radar3.setText("${radarDistance3}m, ${90-radarAngle3}°")
|
||||
radar4.setText("${radarDistance4}m, ${90-radarAngle4}°")
|
||||
radar1.setText("${radarDistance1}m, ${radarAngle1-pitchAngle2}°")
|
||||
radar2.setText("${radarDistance2}m, ${radarAngle2-pitchAngle2}°")
|
||||
radar3.setText("${radarDistance3}m, ${radarAngle3-pitchAngle2}°")
|
||||
radar4.setText("${radarDistance4}m, ${radarAngle4-pitchAngle2}°")
|
||||
|
||||
hAngleText.setText("${hAngle}°")
|
||||
vAngleText.setText("${vAngle}°")
|
||||
|
|
@ -380,6 +522,15 @@ class MainActivity : AppCompatActivity() {
|
|||
rollAngle.setText("${rollAngle2}°")
|
||||
azimuthAngle.setText("${azimuthAngle2}°")
|
||||
gps.setText("经度:${lon2}°,纬度:${lat2}°,高度:${h2}m")
|
||||
|
||||
logger.log("1号线: "+radarDistance1+" , "+(radarAngle1-pitchAngle2)+"",isPrint);
|
||||
logger.log("2号线: "+radarDistance2+" , "+(radarAngle2-pitchAngle2)+"",isPrint);
|
||||
logger.log("3号线: "+radarDistance3+" , "+(radarAngle3-pitchAngle2)+"",isPrint);
|
||||
logger.log("4号线: "+radarDistance4+" , "+(radarAngle4-pitchAngle2)+"",isPrint);
|
||||
logger.log("俯仰角: "+pitchAngle2+" ",isPrint);
|
||||
logger.log("横滚角: "+rollAngle2+" ",isPrint);
|
||||
logger.log("航向角: "+azimuthAngle2+" ",isPrint);
|
||||
logger.log("雷达点: 经度: "+lon2+" ,纬度: "+lat2+" ,高度: "+h2+" ",isPrint);
|
||||
if (qual == "01") {
|
||||
gpsMode.setText("单点定位")
|
||||
} else if (qual == "02") {
|
||||
|
|
@ -440,7 +591,7 @@ class MainActivity : AppCompatActivity() {
|
|||
).show()
|
||||
}
|
||||
}
|
||||
} else if (resultDataSb.length > 96) {
|
||||
} else if (resultDataSb.length > 104) {
|
||||
resultDataSb.clear()
|
||||
}
|
||||
}
|
||||
|
|
@ -454,7 +605,312 @@ class MainActivity : AppCompatActivity() {
|
|||
}
|
||||
|
||||
|
||||
//hay 四分裂--3点/6点
|
||||
private fun dealWithDatas() {
|
||||
|
||||
var sensor1 = SensorDataBean()
|
||||
sensor1.pitchAngle = 3.0309
|
||||
sensor1.rollAngle = 1.0171
|
||||
sensor1.azimuthAngle = 257.2454
|
||||
sensor1.lon = 117.1633331
|
||||
sensor1.lat = 31.78590314
|
||||
sensor1.h = 37.46575000
|
||||
var radarPoint1: MutableList<RadarPointBean> = ArrayList()
|
||||
radarPoint1.add(RadarPointBean(43.95-3.0309, 2.5315))
|
||||
radarPoint1.add(RadarPointBean(53.35-3.0309, 2.318))
|
||||
radarPoint1.add(RadarPointBean(57.15-3.0309, 2.7685))
|
||||
radarPoint1.add(RadarPointBean(49.0-3.0309, 2.937))
|
||||
|
||||
var coordinate1: MutableList<Coordinate> = ArrayList()
|
||||
for (radarPointBean in radarPoint1) {
|
||||
val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor1)
|
||||
coordinate.radarPoint = radarPointBean
|
||||
coordinate1.add(coordinate)
|
||||
}
|
||||
|
||||
//// var sensor2 = SensorDataBean()
|
||||
//// sensor2.pitchAngle = 0.01
|
||||
//// sensor2.rollAngle = 1.01
|
||||
//// sensor2.azimuthAngle = 110.11
|
||||
//// sensor2.lon = 117.16295435
|
||||
//// sensor2.lat = 31.78569556
|
||||
//// sensor2.h = 40.25136
|
||||
//// var radarPoint2: MutableList<RadarPointBean> = ArrayList()
|
||||
//// radarPoint2.add(RadarPointBean(170.35, 5.867))
|
||||
//// radarPoint2.add(RadarPointBean(171.0, 6.323))
|
||||
//// radarPoint2.add(RadarPointBean(166.65, 6.373))
|
||||
//// radarPoint2.add(RadarPointBean(166.05, 5.935))
|
||||
//// var coordinate2 :MutableList<Coordinate> = ArrayList()
|
||||
//// for (radarPointBean in radarPoint2) {
|
||||
//// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor2)
|
||||
//// coordinate.radarPoint = radarPointBean
|
||||
//// coordinate2.add(coordinate)
|
||||
//// }
|
||||
//
|
||||
var sensor3 = SensorDataBean()
|
||||
sensor3.pitchAngle = 3.0353
|
||||
sensor3.rollAngle = 0.0018
|
||||
sensor3.azimuthAngle = 271.2448
|
||||
sensor3.lon = 117.16349030
|
||||
sensor3.lat = 31.78590675
|
||||
sensor3.h = 37.53740000
|
||||
var radarPoint3: MutableList<RadarPointBean> = ArrayList()
|
||||
radarPoint3.add(RadarPointBean(46.6-3.0353, 1.809))
|
||||
radarPoint3.add(RadarPointBean(59.0-3.0353, 1.639))
|
||||
radarPoint3.add(RadarPointBean(62.8-3.0353, 2.094))
|
||||
radarPoint3.add(RadarPointBean(52.2-3.0353, 2.204))
|
||||
var coordinate3: MutableList<Coordinate> = ArrayList()
|
||||
for (radarPointBean in radarPoint3) {
|
||||
val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor3)
|
||||
coordinate.radarPoint = radarPointBean
|
||||
coordinate3.add(coordinate)
|
||||
}
|
||||
|
||||
//// var sensor4 = SensorDataBean()
|
||||
//// sensor4.pitchAngle = 1.01
|
||||
//// sensor4.rollAngle = 0.01
|
||||
//// sensor4.azimuthAngle = 120.21
|
||||
//// sensor4.lon = 117.16296837
|
||||
//// sensor4.lat = 31.78568228
|
||||
//// sensor4.h = 41.37936
|
||||
//// var radarPoint4: MutableList<RadarPointBean> = ArrayList()
|
||||
//// radarPoint4.add(RadarPointBean(157.9, 6.581))
|
||||
//// radarPoint4.add(RadarPointBean(159.15, 7.005))
|
||||
//// radarPoint4.add(RadarPointBean(155.55, 7.155))
|
||||
//// radarPoint4.add(RadarPointBean(154.35, 7.766))
|
||||
//// var coordinate4 :MutableList<Coordinate> = ArrayList()
|
||||
//// for (radarPointBean in radarPoint4) {
|
||||
//// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor4)
|
||||
//// coordinate.radarPoint = radarPointBean
|
||||
//// coordinate4.add(coordinate)
|
||||
//// }
|
||||
//
|
||||
var sensor5 = SensorDataBean()
|
||||
sensor5.pitchAngle = 2.0295
|
||||
sensor5.rollAngle = 1.0171
|
||||
sensor5.azimuthAngle = 269.5476
|
||||
sensor5.lon = 117.16371240
|
||||
sensor5.lat = 31.78590810
|
||||
sensor5.h = 37.86845000
|
||||
var radarPoint5: MutableList<RadarPointBean> = ArrayList()
|
||||
radarPoint5.add(RadarPointBean(33.1-2.0295, 2.025))
|
||||
radarPoint5.add(RadarPointBean(44.45-2.0295, 1.7655))
|
||||
radarPoint5.add(RadarPointBean(50.05-2.0295, 2.1815))
|
||||
radarPoint5.add(RadarPointBean(40.3-2.0295, 2.379))
|
||||
var coordinate5: MutableList<Coordinate> = ArrayList()
|
||||
for (radarPointBean in radarPoint5) {
|
||||
val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor5)
|
||||
coordinate.radarPoint = radarPointBean
|
||||
coordinate5.add(coordinate)
|
||||
}
|
||||
|
||||
//// var sensor6 = SensorDataBean()
|
||||
//// sensor6.pitchAngle = 0.0
|
||||
//// sensor6.rollAngle = 3.04
|
||||
//// sensor6.azimuthAngle = 119.2
|
||||
//// sensor6.lon = 117.16281242
|
||||
//// sensor6.lat = 31.78569027
|
||||
//// sensor6.h = 41.61336
|
||||
//// var radarPoint6: MutableList<RadarPointBean> = ArrayList()
|
||||
//// radarPoint6.add(RadarPointBean(160.05, 5.774))
|
||||
//// radarPoint6.add(RadarPointBean(161.55, 6.197))
|
||||
//// radarPoint6.add(RadarPointBean(157.8, 6.359))
|
||||
//// radarPoint6.add(RadarPointBean(156.1, 5.973))
|
||||
//// var coordinate6 :MutableList<Coordinate> = ArrayList()
|
||||
//// for (radarPointBean in radarPoint6) {
|
||||
//// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor6)
|
||||
//// coordinate.radarPoint = radarPointBean
|
||||
//// coordinate6.add(coordinate)
|
||||
//// }
|
||||
//
|
||||
sensorDataList.add(sensor1)
|
||||
//// sensorDataList.add(sensor2)
|
||||
sensorDataList.add(sensor3)
|
||||
coordinatesList.add(coordinate1)
|
||||
//// coordinatesList.add(coordinate2)
|
||||
coordinatesList.add(coordinate3)
|
||||
//// sensorDataList.add(sensor4)
|
||||
sensorDataList.add(sensor5)
|
||||
//// sensorDataList.add(sensor6)
|
||||
//// coordinatesList.add(coordinate4)
|
||||
coordinatesList.add(coordinate5)
|
||||
//// coordinatesList.add(coordinate6)
|
||||
|
||||
|
||||
// var sensor1 = SensorDataBean()
|
||||
// sensor1.pitchAngle = 3.04
|
||||
// sensor1.rollAngle = 0.01
|
||||
// sensor1.azimuthAngle = 258.24
|
||||
// sensor1.lon = 117.16327966
|
||||
// sensor1.lat = 31.78587773
|
||||
// sensor1.h = 28.3873
|
||||
// var radarPoint1: MutableList<RadarPointBean> = ArrayList()
|
||||
// radarPoint1.add(RadarPointBean(173.5, 4.55))
|
||||
// radarPoint1.add(RadarPointBean(174.2, 4.96))
|
||||
//
|
||||
// var coordinate1 :MutableList<Coordinate> = ArrayList()
|
||||
// for (radarPointBean in radarPoint1) {
|
||||
// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor1)
|
||||
// coordinate.radarPoint = radarPointBean
|
||||
// coordinate1.add(coordinate)
|
||||
// }
|
||||
//
|
||||
// var sensor2 = SensorDataBean()
|
||||
// sensor2.pitchAngle = 2.02
|
||||
// sensor2.rollAngle = 0.0
|
||||
// sensor2.azimuthAngle = 185.86
|
||||
// sensor2.lon = 117.162919
|
||||
// sensor2.lat = 31.786029
|
||||
// sensor2.h = 44.81
|
||||
// var radarPoint2: MutableList<RadarPointBean> = ArrayList()
|
||||
// radarPoint2.add(RadarPointBean(170.5, 3.04))
|
||||
// radarPoint2.add(RadarPointBean(173.55, 3.4))
|
||||
// var coordinate2 :MutableList<Coordinate> = ArrayList()
|
||||
// for (radarPointBean in radarPoint2) {
|
||||
// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor2)
|
||||
// coordinate.radarPoint = radarPointBean
|
||||
// coordinate2.add(coordinate)
|
||||
// }
|
||||
//
|
||||
// var sensor3 = SensorDataBean()
|
||||
// sensor3.pitchAngle =1.02
|
||||
// sensor3.rollAngle = 0.0
|
||||
// sensor3.azimuthAngle = 187.88
|
||||
// sensor3.lon = 117.16275
|
||||
// sensor3.lat = 31.786031
|
||||
// sensor3.h = 42.96
|
||||
// var radarPoint3: MutableList<RadarPointBean> = ArrayList()
|
||||
// radarPoint3.add(RadarPointBean(172.65, 3.9))
|
||||
// radarPoint3.add(RadarPointBean(175.55, 4.23))
|
||||
// var coordinate3 :MutableList<Coordinate> = ArrayList()
|
||||
// for (radarPointBean in radarPoint3) {
|
||||
// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor3)
|
||||
// coordinate.radarPoint = radarPointBean
|
||||
// coordinate3.add(coordinate)
|
||||
// }
|
||||
//
|
||||
// sensorDataList.add(sensor1)
|
||||
// sensorDataList.add(sensor2)
|
||||
// sensorDataList.add(sensor3)
|
||||
// coordinatesList.add(coordinate1)
|
||||
// coordinatesList.add(coordinate2)
|
||||
// coordinatesList.add(coordinate3)
|
||||
|
||||
|
||||
// var sensor1 = SensorDataBean()
|
||||
// sensor1.pitchAngle = 0.0
|
||||
// sensor1.rollAngle = 0.0
|
||||
// sensor1.azimuthAngle = 192.93
|
||||
// sensor1.lon = 117.16394922
|
||||
// sensor1.lat = 31.78600260
|
||||
// sensor1.h = 32.66266
|
||||
// var radarPoint1: MutableList<RadarPointBean> = ArrayList()
|
||||
// radarPoint1.add(RadarPointBean(137.6, 6.588))
|
||||
//
|
||||
// var coordinate1: MutableList<Coordinate> = ArrayList()
|
||||
// for (radarPointBean in radarPoint1) {
|
||||
// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor1)
|
||||
// coordinate.radarPoint = radarPointBean
|
||||
// coordinate1.add(coordinate)
|
||||
// }
|
||||
//
|
||||
// var sensor2 = SensorDataBean()
|
||||
// sensor2.pitchAngle = 1.01
|
||||
// sensor2.rollAngle = 4.05
|
||||
// sensor2.azimuthAngle = 195.95
|
||||
// sensor2.lon = 117.16394922
|
||||
// sensor2.lat = 31.78600260
|
||||
// sensor2.h = 32.66266
|
||||
// var radarPoint2: MutableList<RadarPointBean> = ArrayList()
|
||||
// radarPoint2.add(RadarPointBean(136.69, 6.669))
|
||||
// var coordinate2: MutableList<Coordinate> = ArrayList()
|
||||
// for (radarPointBean in radarPoint2) {
|
||||
// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor2)
|
||||
// coordinate.radarPoint = radarPointBean
|
||||
// coordinate2.add(coordinate)
|
||||
// }
|
||||
//
|
||||
// var sensor3 = SensorDataBean()
|
||||
// sensor3.pitchAngle = 0.01
|
||||
// sensor3.rollAngle = 0.01
|
||||
// sensor3.azimuthAngle = 195.96
|
||||
// sensor3.lon = 117.16394581
|
||||
// sensor3.lat = 31.78550375
|
||||
// sensor3.h = 30.31926
|
||||
// var radarPoint3: MutableList<RadarPointBean> = ArrayList()
|
||||
// radarPoint3.add(RadarPointBean(140.8, 6.334))
|
||||
// var coordinate3: MutableList<Coordinate> = ArrayList()
|
||||
// for (radarPointBean in radarPoint3) {
|
||||
// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor3)
|
||||
// coordinate.radarPoint = radarPointBean
|
||||
// coordinate3.add(coordinate)
|
||||
// }
|
||||
//
|
||||
// var sensor4 = SensorDataBean()
|
||||
// sensor4.pitchAngle = 0.0
|
||||
// sensor4.rollAngle = 0.01
|
||||
// sensor4.azimuthAngle = 194.94
|
||||
// sensor4.lon = 117.16394581
|
||||
// sensor4.lat = 31.78550375
|
||||
// sensor4.h = 30.31926
|
||||
// var radarPoint4: MutableList<RadarPointBean> = ArrayList()
|
||||
// radarPoint4.add(RadarPointBean(139.94, 6.277))
|
||||
// var coordinate4: MutableList<Coordinate> = ArrayList()
|
||||
// for (radarPointBean in radarPoint4) {
|
||||
// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor4)
|
||||
// coordinate.radarPoint = radarPointBean
|
||||
// coordinate4.add(coordinate)
|
||||
// }
|
||||
//
|
||||
// var sensor5 = SensorDataBean()
|
||||
// sensor5.pitchAngle = 0.01
|
||||
// sensor5.rollAngle = 1.01
|
||||
// sensor5.azimuthAngle = 194.94
|
||||
// sensor5.lon = 117.16395386
|
||||
// sensor5.lat = 31.78494992
|
||||
// sensor5.h = 34.99086
|
||||
// var radarPoint5: MutableList<RadarPointBean> = ArrayList()
|
||||
// radarPoint5.add(RadarPointBean(130.9, 6.495))
|
||||
// var coordinate5: MutableList<Coordinate> = ArrayList()
|
||||
// for (radarPointBean in radarPoint5) {
|
||||
// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor5)
|
||||
// coordinate.radarPoint = radarPointBean
|
||||
// coordinate5.add(coordinate)
|
||||
// }
|
||||
//
|
||||
// var sensor6 = SensorDataBean()
|
||||
// sensor6.pitchAngle = 0.0
|
||||
// sensor6.rollAngle = 5.05
|
||||
// sensor6.azimuthAngle = 198.98
|
||||
// sensor6.lon = 117.16395386
|
||||
// sensor6.lat = 31.78494992
|
||||
// sensor6.h = 34.99086
|
||||
// var radarPoint6: MutableList<RadarPointBean> = ArrayList()
|
||||
// radarPoint6.add(RadarPointBean(129.94, 6.485))
|
||||
// var coordinate6: MutableList<Coordinate> = ArrayList()
|
||||
// for (radarPointBean in radarPoint6) {
|
||||
// val coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensor6)
|
||||
// coordinate.radarPoint = radarPointBean
|
||||
// coordinate6.add(coordinate)
|
||||
// }
|
||||
//
|
||||
// sensorDataList.add(sensor1)
|
||||
// sensorDataList.add(sensor2)
|
||||
// sensorDataList.add(sensor3)
|
||||
// coordinatesList.add(coordinate1)
|
||||
// coordinatesList.add(coordinate2)
|
||||
// coordinatesList.add(coordinate3)
|
||||
// sensorDataList.add(sensor4)
|
||||
// sensorDataList.add(sensor5)
|
||||
// sensorDataList.add(sensor6)
|
||||
// coordinatesList.add(coordinate4)
|
||||
// coordinatesList.add(coordinate5)
|
||||
// coordinatesList.add(coordinate6)
|
||||
|
||||
}
|
||||
|
||||
private fun getSag() {
|
||||
// dealWithDatas();
|
||||
if (methodNum == 3) {
|
||||
if (coordinatesList.size >= 3) {
|
||||
var point1: MutableList<Coordinate> = ArrayList()
|
||||
|
|
@ -485,8 +941,9 @@ class MainActivity : AppCompatActivity() {
|
|||
lineAllPoint.add(point3[i])
|
||||
sb.append(calculate(span, lineAllPoint, 3)).append(",")
|
||||
}
|
||||
|
||||
sagEditText.setText(sb.toString())
|
||||
logger.log("三点计算弧垂:"+sb.toString())
|
||||
logger.log("三点计算弧垂:"+sb.toString(),isPrint)
|
||||
}
|
||||
} else if (methodNum == 6) {
|
||||
var pointNum = methodNum
|
||||
|
|
@ -528,10 +985,10 @@ class MainActivity : AppCompatActivity() {
|
|||
sb.append(calculate(span, lineAllPoint, pointNum)).append(",")
|
||||
}
|
||||
sagEditText.setText(sb.toString())
|
||||
logger.log("六点计算弧垂:"+sb.toString())
|
||||
logger.log("六点计算弧垂:"+sb.toString(),isPrint)
|
||||
}
|
||||
}
|
||||
|
||||
isPrint=0;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -563,6 +1020,16 @@ class MainActivity : AppCompatActivity() {
|
|||
} else if (i == 2) {
|
||||
//获取测量数据
|
||||
sb.append("0F020000000011")
|
||||
} else if (i == 3) {
|
||||
//保存数据
|
||||
sb.append("0F030000000012")
|
||||
} else if (i == 4) {
|
||||
//更换测量位置
|
||||
if (position.equals("大号在右")) {
|
||||
sb.append("0F040100000014")
|
||||
} else if (position.equals("大号在左")) {
|
||||
sb.append("0F040200000015")
|
||||
}
|
||||
}
|
||||
it.writeData(ByteUtil.hex2byte(sb.toString()))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ public class Coordinate {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "测点{" +
|
||||
return "保存的数据--测点{" +
|
||||
"导线编号=" + wireNum +
|
||||
", lat=" + lat +
|
||||
", lon=" + lon +
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ public class SagCalculation {
|
|||
*/
|
||||
public double kn3Calculation(double l1,double l2,double z1,double z2,double z3)
|
||||
{
|
||||
System.out.println("l1:"+l1+","+l2+","+z1+","+z2+","+z3);
|
||||
double k;
|
||||
k=((z1-z3)-l2/l1*(z1-z2))/(l2*l2-l1*l2);
|
||||
return k*1000.0;
|
||||
|
|
|
|||
|
|
@ -129,12 +129,14 @@ public class SensorDataBean {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "雷达{" +
|
||||
return "保存的数据--雷达{" +
|
||||
"lon=" + lon +
|
||||
", lat=" + lat +
|
||||
", h=" + h +
|
||||
", 方位角=" + azimuthAngle +
|
||||
", 定位模式=" + positioningMode +
|
||||
", 俯仰角=" + pitchAngle +
|
||||
", 横滚角=" + rollAngle +
|
||||
'}';
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -552,6 +552,16 @@ public class ByteUtil {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* 将十六进制字符串解析为有符号整数
|
||||
* @param hexStr 十六进制字符串
|
||||
* @return 有符号整数值
|
||||
*/
|
||||
public static int hexToSignedDecimalInt(String hexStr) {
|
||||
// 使用 Long.parseLong 支持有符号解析
|
||||
return (int) Long.parseLong(hexStr, 16);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
package com.bonus.wrjtest.utils;
|
||||
package com.bonus.wrjtest.utils
|
||||
|
||||
import android.content.Context
|
||||
import kotlin.jvm.Volatile;
|
||||
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import java.io.IOException
|
||||
import java.text.SimpleDateFormat
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*
|
||||
|
||||
class KotlinLogger private constructor(context: Context) {
|
||||
|
||||
private val appContext: Context = context.applicationContext
|
||||
private var currentLogFile: File? = null
|
||||
private var logStartTime: Long = 0
|
||||
// 一个小时的时间间隔
|
||||
private val logIntervalMillis: Long = 60 * 60 * 1000
|
||||
|
||||
companion object {
|
||||
@Volatile
|
||||
|
|
@ -26,31 +26,83 @@ class KotlinLogger private constructor(context: Context) {
|
|||
}
|
||||
}
|
||||
|
||||
fun log(message: String) {
|
||||
val fileName = "app_log${getCurrentTimeAsString()}.txt"
|
||||
val storageDir = File(appContext.getExternalFilesDir(null), "Logs")
|
||||
if (!storageDir.exists()) {
|
||||
storageDir.mkdirs()
|
||||
/**
|
||||
* 打印并保存日志。
|
||||
*
|
||||
* @param message 日志内容。
|
||||
* @param type 控制是否保存日志。1 表示保存,0 表示不保存。
|
||||
*/
|
||||
fun log(message: String, type: Int) {
|
||||
if (type == 1) {
|
||||
saveLogToFile(message)
|
||||
} else {
|
||||
println("日志保存已禁用:$message")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将日志保存到文件。
|
||||
*
|
||||
* @param message 日志内容。
|
||||
*/
|
||||
private fun saveLogToFile(message: String) {
|
||||
val currentTime = System.currentTimeMillis()
|
||||
|
||||
// 如果当前时间超过了日志文件的有效期,或者没有日志文件,则创建新的日志文件
|
||||
if (currentTime - logStartTime >= logIntervalMillis || currentLogFile == null) {
|
||||
createNewLogFile()
|
||||
logStartTime = currentTime
|
||||
}
|
||||
|
||||
val logFile = File(storageDir, fileName)
|
||||
try {
|
||||
FileOutputStream(logFile, true).use { output ->
|
||||
currentLogFile?.let { logFile ->
|
||||
FileOutputStream(logFile, true).use { output ->
|
||||
output.write("${getCurrentDateTimeString()} - $message\n".toByteArray())
|
||||
}
|
||||
println("日志文件已保存至:${logFile.absolutePath}")
|
||||
}
|
||||
println("日志文件已保存至:${logFile.absolutePath}")
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
println("写入日志文件时出错: ${e.message}")
|
||||
}
|
||||
}
|
||||
|
||||
private fun getCurrentTimeAsString(): String {
|
||||
val currentTime = LocalTime.now()
|
||||
val formatter = DateTimeFormatter.ofPattern("HHmmss")
|
||||
return currentTime.format(formatter)
|
||||
/**
|
||||
* 创建一个新的日志文件。
|
||||
*/
|
||||
private fun createNewLogFile() {
|
||||
val storageDir = File(appContext.getExternalFilesDir(null), "Logs")
|
||||
if (!storageDir.exists()) {
|
||||
storageDir.mkdirs()
|
||||
}
|
||||
|
||||
val fileName = "app_log${getCurrentTimeAsString()}.txt"
|
||||
currentLogFile = File(storageDir, fileName)
|
||||
println("新日志文件已创建:${currentLogFile?.absolutePath}")
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前时间的字符串表示(格式为 xxxx年xx月xx日xx时xx分xx秒)。
|
||||
*
|
||||
* @return 当前时间的字符串表示。
|
||||
*/
|
||||
private fun getCurrentTimeAsString(): String {
|
||||
val calendar = Calendar.getInstance()
|
||||
val year = calendar.get(Calendar.YEAR)
|
||||
// 注意:月份从0开始,需加1
|
||||
val month = String.format("%02d", calendar.get(Calendar.MONTH) + 1)
|
||||
val day = String.format("%02d", calendar.get(Calendar.DAY_OF_MONTH))
|
||||
val hour = String.format("%02d", calendar.get(Calendar.HOUR_OF_DAY))
|
||||
val minute = String.format("%02d", calendar.get(Calendar.MINUTE))
|
||||
val second = String.format("%02d", calendar.get(Calendar.SECOND))
|
||||
return "${year}年${month}月${day}日${hour}时${minute}分${second}秒"
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前日期和时间的字符串表示(格式为 yyyy-MM-dd HH:mm:ss)。
|
||||
*
|
||||
* @return 当前日期和时间的字符串表示。
|
||||
*/
|
||||
private fun getCurrentDateTimeString(): String {
|
||||
val currentDateTime = Date()
|
||||
val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault())
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ package com.bonus.wrjtest.utils;
|
|||
import com.bonus.wrjtest.entity.Coordinate;
|
||||
import com.bonus.wrjtest.entity.SagCalculation;
|
||||
|
||||
import java.math.RoundingMode;
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
|
@ -28,7 +29,11 @@ public class MultipointSagMeasure {
|
|||
}else{
|
||||
sag = calculateThreePoint(span, list);
|
||||
}
|
||||
return sag;
|
||||
// 使用 DecimalFormat 格式化为两位小数
|
||||
DecimalFormat df = new DecimalFormat("#.00");
|
||||
// 四舍五入
|
||||
df.setRoundingMode(RoundingMode.HALF_UP);
|
||||
return Double.parseDouble(df.format(sag));
|
||||
}
|
||||
|
||||
public static double calculateThreePoint(double span, List<Coordinate> list) {
|
||||
|
|
@ -46,6 +51,11 @@ public class MultipointSagMeasure {
|
|||
double h2 = list.get(1).getH();//P2高程
|
||||
// 调用calculate方法计算距离
|
||||
double d1 = calculator.calculate(lat1, lon1, lat2, lon2, FB_INDEX);
|
||||
// 保留三位小数的字符串形式
|
||||
String formattedValue = String.format("%.3f", d1);
|
||||
// 如果需要转换回 double
|
||||
d1 = Double.parseDouble(formattedValue);
|
||||
|
||||
// 创建一个DecimalFormat对象来格式化数字
|
||||
DecimalFormat df = new DecimalFormat("#.###");
|
||||
// 使用format方法将距离格式化为三位有效数字的字符串
|
||||
|
|
@ -56,6 +66,12 @@ public class MultipointSagMeasure {
|
|||
double h3 = list.get(2).getH();//P3高程
|
||||
// 调用calculate方法计算距离
|
||||
double d2 = calculator.calculate(lat1, lon1, lat3, lon3, FB_INDEX);
|
||||
// 保留三位小数的字符串形式
|
||||
String formattedValue2 = String.format("%.3f", d2);
|
||||
// 如果需要转换回 double
|
||||
d2 = Double.parseDouble(formattedValue2);
|
||||
|
||||
|
||||
// 使用format方法将距离格式化为三位有效数字的字符串
|
||||
formattedDistance = df.format(d2);
|
||||
// 创建SagCalculation对象
|
||||
|
|
|
|||
|
|
@ -87,9 +87,21 @@ public class RadarMathUtil {
|
|||
* @return
|
||||
*/
|
||||
public static Coordinate transferPoint2(RadarPointBean radarPointBean, SensorDataBean sensorDataBean) {
|
||||
double radarAngle = radarPointBean.getAngle();
|
||||
// double radarAngles = 0;
|
||||
// if (radarPointBean.getAngle()>90){
|
||||
// //无人机在上面,扫描角度加上0.05
|
||||
// radarAngles = radarPointBean.getAngle()+0.05;
|
||||
// radarPointBean.setAngle(radarAngles);
|
||||
// }else if (radarPointBean.getAngle()<90){
|
||||
// //无人机在下面,扫描角度减去0.05
|
||||
// radarAngles = radarPointBean.getAngle()-0.05;
|
||||
// radarPointBean.setAngle(radarAngles);
|
||||
// }
|
||||
double radarAngle = radarPointBean.getAngle()-sensorDataBean.getPitchAngle();
|
||||
double dis = radarPointBean.getDistance();
|
||||
double dis2=dis;
|
||||
dis = dis * Math.sin(Math.toRadians(radarAngle));
|
||||
|
||||
double lonGps = sensorDataBean.getLon();
|
||||
double latGps = sensorDataBean.getLat();
|
||||
double hGps = sensorDataBean.getH();
|
||||
|
|
@ -119,7 +131,8 @@ public class RadarMathUtil {
|
|||
// }else if(radarAngle<90){
|
||||
// radarAngle = 90 - radarAngle;
|
||||
// }
|
||||
double h2 = hRadar + dis * MathUtils.cos(radarAngle - sensorDataBean.getRollAngle());
|
||||
// double h2 = hRadar + dis * MathUtils.cos(radarAngle - sensorDataBean.getPitchAngle());
|
||||
double h2 = hRadar + dis2 * MathUtils.cos(radarAngle - 0);
|
||||
System.out.printf("ABC中心雷达点:lat:%.8f; lon:%.8f; 高度:%.2f; 方位角:%.2f\n", latRadar, lonRadar, hRadar,azimuthAngle);
|
||||
System.out.printf("ABC测量点:lat:%.8f; lon:%.8f; 高度:%.2f\n", lat2, lon2, h2);
|
||||
return new Coordinate(lon2,lat2,h2);
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="40dp"
|
||||
android:textSize="12sp"
|
||||
android:text="6.切换方法"/>
|
||||
android:text="6.测量位置"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/clear"
|
||||
|
|
@ -236,22 +236,61 @@
|
|||
android:layout_height="wrap_content"
|
||||
>
|
||||
|
||||
<TextView
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="wrap_content"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="定位模式:"
|
||||
android:textSize="12sp"
|
||||
android:layout_gravity="center_vertical"/>
|
||||
|
||||
<EditText
|
||||
<EditText
|
||||
android:id="@+id/gpsMode"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textSize="12sp"
|
||||
android:inputType="text"/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="wrap_content"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="测量位置:"
|
||||
android:textSize="12sp"
|
||||
android:layout_gravity="center_vertical"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/position"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textSize="12sp"
|
||||
android:text="大号在右"
|
||||
android:inputType="none"
|
||||
android:focusable="false"
|
||||
android:clickable="false"/>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -305,29 +344,63 @@
|
|||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
>
|
||||
|
||||
<TextView
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="wrap_content"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="航向角:"
|
||||
android:textSize="12sp"
|
||||
android:layout_gravity="center_vertical"/>
|
||||
|
||||
<EditText
|
||||
<EditText
|
||||
android:id="@+id/azimuthAngle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textSize="12sp"
|
||||
android:inputType="text"/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="wrap_content"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="档距:"
|
||||
android:textSize="12sp"
|
||||
android:layout_gravity="center_vertical"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/span"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:textSize="12sp"
|
||||
android:text="48.209"
|
||||
android:inputType="text"/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
|||
Loading…
Reference in New Issue