如果把GPS經緯度資訊放到該文章提到的coordinates變數中。
String coordinates[] = {"1.352566007", "103.78921587"};
那要如何讀取GPS的資訊?我們利用長高科技DMA6410XP及GPS設備,利用其UART的範例讀取GPS的訊號(如第三個圖所示)。
我們利用Hello來解析GPS的格式,其程式如下:
package com.example;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class Hello extends Activity {
String str = "$GPGGA,000339.026,8960.0000,N,00000.0000,E,0,0,,137.0,M,13.0,M,,*4E";
TextView tv;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv=(TextView) findViewById(R.id.text01);
tv.setText("經度: "+getLatitude(str)+"緯度: "+getLongitude(str));
}
private String getLatitude(String str2) {
// TODO Auto-generated method stub
boolean f=false;
int status = 0;
int ptr = 0;
String str1="$GPGGA,";
String result="";
if(str2.length()<50) return result;
for(int i=0; i<str2.length( );i++)
{
if(f){
switch(status){
case 0:
case 1:
case 2:
if(str2.charAt(i)==',') status++;
break;
case 3:
if(str2.charAt(i)==',') status++;
else
result+=str2.charAt(i);
break;
case 4:
return result;
}
}
else
{
if (ptr==7)
f=true;
else {if(str1.charAt(ptr)==str2.charAt(i)) ptr++;
else ptr=0;
}
}
}
return null;
}
private String getLongitude(String str2) {
// TODO Auto-generated method stub
boolean f=false;
int status = 0;
int ptr = 0;
String str1="$GPGGA,";
String result="";
if(str2.length()<50) return result;
for(int i=0; i<str2.length();i++)
{
if(f){
switch(status){
case 0:
if(str2.charAt(i)==',') status++;
break;
case 1:
if(str2.charAt(i)==',') status++;
else
result+=str2.charAt(i);
break;
case 2:
return result;
}
}
else
{
if (ptr==7)
f=true;
else {if(str1.charAt(ptr)==str2.charAt(i)) ptr++;
else ptr=0;
}
}
}
return null;
}
}
可以使用split針對","進行字串切割
回覆刪除這樣可以省去很多字元判斷的麻煩
private String getLatitude(String str2) {
// TODO Auto-generated method stub
String[] splitStr = str2.split(",");
if(splitStr.length>5){
return splitStr[4];
}else{
return null;
}
}
private String getLongitude(String str2) {
// TODO Auto-generated method stub
String[] splitStr = str2.split(",");
if(splitStr.length>4){
return splitStr[2];
}else{
return null;
}
}
感謝小肯尼提供寶貴的程式設計。
回覆刪除我知到有gpsd(open source)元件可以用,透過uart餵GPS NEMA字串,gpsd直接轉成經緯,速度,時間,衛星CN值給你等等.....
回覆刪除google gpsd