GPSLogger เป็นแอป Android ที่บันทึกข้อมูล GPS ในรูปแบบต่างๆ (GPX, KML, CSV, NMEA, URL ที่กำหนดเอง) และมีตัวเลือกสำหรับการอัปโหลด (SFTP, OpenStreetMap, Google Drive, Dropbox, อีเมล) แอปนี้มีเป้าหมายเพื่อให้แบตเตอรี่มีประสิทธิภาพมากที่สุด
อ่านเกี่ยวกับคุณสมบัติของ GPSLogger ที่นี่
คุณสามารถค้นหาได้บน F-Droid
คุณสามารถดาวน์โหลดได้โดยตรงจากรุ่น
คุณสามารถช่วยแปลบน Weblate ได้
คุณยังสามารถส่งคำขอดึงเพื่อแก้ไขข้อบกพร่องและคุณสมบัติใหม่ได้
ฉันไม่เก่ง UI มากนัก ดังนั้นการทำงานใดๆ ที่มีเลย์เอาต์ก็ยินดีเป็นอย่างยิ่ง!
ได้รับอนุญาตภายใต้ GPL v2 | ใบอนุญาตของบุคคลที่สาม | นโยบายความเป็นส่วนตัว
เป็นวิธีปฏิบัติที่ดีในการตรวจสอบการดาวน์โหลด ลายเซ็น PGP, ชุด Cosign และผลรวมตรวจสอบ SHA256 จะมาพร้อมกับ .apk
แต่ละรายการ
วิธีตรวจสอบความสมบูรณ์และลายเซ็นของ PGP:
gpg --recv-key 6989CF77490369CFFDCBCD8995E7D75C76CBE9A9
gpg --verify gpslogger-132.apk.asc
(ทดลอง) หากต้องการตรวจสอบกับ Sigstore Cosign คำสั่งควรอยู่ใน release note ซึ่งจะมีลักษณะดังนี้:
cosign verify-blob gpslogger-132.apk
--bundle gpslogger-132.apk.cosign.bundle --new-bundle-format
--cert-oidc-issuer https://token.actions.githubusercontent.com
--cert-identity https://github.com/mendhak/gpslogger/.github/workflows/generate-release-apk.yml@refs/head/master
วิธีตรวจสอบเช็คซัม:
sha256sum -c gpslogger-132.apk.SHA256
โปรเจ็กต์นี้ใช้ปลั๊กอินระบบบิลด์ Android สำหรับ Gradle คำแนะนำเหล่านี้ใช้สำหรับ Ubuntu Linux ที่ใช้ Android Studio แต่สำหรับระบบปฏิบัติการอื่น ๆ ก็ควรจะใกล้เคียงกัน
ทำตามคำแนะนำบนเว็บไซต์นักพัฒนาซอฟต์แวร์ Android เพื่อตั้งค่าคอมพิวเตอร์ของคุณสำหรับการพัฒนา
ดาวน์โหลดและติดตั้ง Android Studio (มีสแน็ปช็อตด้วย)
git clone git://github.com/mendhak/gpslogger.git
โปรเจ็กต์นี้ใช้ไลบรารี Android บางตัว คุณสามารถติดตั้งได้โดยใช้ sdkmanager
ที่มีการใช้งานไม่ดีของ Google :
echo y | $HOME/android-sdk/tools/bin/sdkmanager 'tools'
echo y | $HOME/android-sdk/tools/bin/sdkmanager 'platform-tools'
echo y | $HOME/android-sdk/tools/bin/sdkmanager 'build-tools;26.0.2'
echo y | $HOME/android-sdk/tools/bin/sdkmanager 'platforms;android-27'
echo y | $HOME/android-sdk/tools/bin/sdkmanager 'platforms;android-25'
echo y | $HOME/android-sdk/tools/bin/sdkmanager 'extras;google;m2repository'
echo y | $HOME/android-sdk/tools/bin/sdkmanager 'extras;android;m2repository'
echo y | $HOME/android-sdk/tools/bin/sdkmanager 'extras;google;google_play_services'
สร้างไฟล์ชื่อ local.properties
โดยชี้ไปที่ไดเรกทอรี Android SDK ของคุณ
cd gpslogger
echo "sdk.dir=/home/mendhak/Programs/Android" > local.properties
เปิด Android Studio แล้วเลือกนำเข้าโครงการ เลือกไฟล์ build.gradle
บนสุดภายใต้ GPSLogger
หากคุณได้รับกล่องโต้ตอบการนำเข้า ให้เลือก นำเข้าโปรเจ็กต์จากโมเดลภายนอก
ในหน้าจอถัดไป ให้เลือกค่าเริ่มต้นและดำเนินการต่อ (ตัวตัดการไล่ระดับสีเริ่มต้น)
ให้เวลาสักครู่แล้ว Android Studio จะกำหนดค่าโปรเจ็กต์และดาวน์โหลดไลบรารีต่างๆ
ลงทะเบียนสำหรับบัญชีด้วย OpenStreetMap และเข้าสู่ระบบ
คลิกที่ 'การตั้งค่าของฉัน' จากนั้นเลือก 'แอปพลิเคชัน OAuth2'
คลิกที่ 'ลงทะเบียนใบสมัครของคุณ'
กรอกแบบฟอร์มพร้อมรายละเอียดเหล่านี้ อย่าลืมยกเลิกการเลือกช่องทำเครื่องหมาย "แอปพลิเคชันที่เป็นความลับ" เนื่องจากนี่คือแอปบนอุปกรณ์เคลื่อนที่
หลังจากลงทะเบียนแอปพลิเคชันแล้ว คุณจะได้รับรหัสลูกค้า
วางรหัสลูกค้าใน OpenStreetMapManager#getOpenStreetMapClientID()
หากคุณใช้รูปแบบที่คุณกำหนดเอง ให้แทนที่ค่าใน AndroidManifest.xml และ OpenStreetMapManager#getOpenStreetMapRedirect()
ลงทะเบียนสำหรับบัญชีกับ Dropbox.com
ไปที่หน้า Dropbox Developers และคลิกที่ 'สร้างแอป'
ใช้การตั้งค่าเหล่านี้ แต่เลือกชื่อที่ไม่ซ้ำ
หลังจากสร้างแอปแล้ว คุณจะได้รับรหัสแอปและความลับ (อันที่อยู่ในภาพหน้าจอเป็นของปลอม)
วางคีย์ไว้ใน ~/.gradle/gradle.properties
ดังนี้:
GPSLOGGER_DROPBOX_APPKEY=abcdefgh
GPSLOGGER_DROPBOX_APPSECRET=1234123456
แทนที่คีย์แอป Dropbox เป็นไฟล์ AndroidManifest.xml ของคุณ
<!-- Change this to be db- followed by your app key -->
<data android:scheme="db-12341234"/>
ลงชื่อสมัครใช้แพลตฟอร์ม Google Cloud สร้างโครงการใหม่
ภายใต้ API และบริการ ให้เปิดใช้งาน Google Drive API
จากนั้นไปที่หน้าจอยินยอม Oauth โดยทำตามขั้นตอนต่างๆ จนกว่าจะถึงขอบเขต เพิ่มขอบเขต https://www.googleapis.com/auth/drive.file
สร้างข้อมูลรับรอง OAuth ประเภท Android
ใต้ชื่อแพ็คเกจ ให้ใช้ com.mendhak.gpslogger
สำหรับลายนิ้วมือใบรับรอง SHA-1 ให้รับโดยใช้คำสั่ง keytool -keystore ~/.android/debug.keystore -list -v
GPSLogger ประกอบด้วยองค์ประกอบหลักบางประการ
Event Bus เป็นที่ที่การสื่อสารข้ามเกิดขึ้น ส่วนประกอบต่างๆ ยกระดับเหตุการณ์บน Event Bus และส่วนอื่นๆ ของแอปพลิเคชันจะรับฟังเหตุการณ์เหล่านั้น สิ่งที่สำคัญที่สุดคือเมื่อได้รับตำแหน่งแล้ว สถานที่นั้นจะถูกวางไว้บนบัสเหตุการณ์และใช้ชิ้นส่วนจำนวนมาก
GPSLoggingService เป็นที่ที่งานทั้งหมดเกิดขึ้น บริการนี้จะพูดคุยกับผู้ให้บริการตำแหน่ง (เครือข่ายและดาวเทียม) มันตั้งค่าตัวจับเวลาและการเตือนสำหรับจุด GPS ถัดไปที่จะร้องขอ มันส่งข้อมูลตำแหน่งไปยังตัวบันทึกต่างๆ เพื่อให้สามารถเขียนไฟล์ได้ นอกจากนี้ยังเรียกใช้ผู้อัปโหลดอัตโนมัติเพื่อให้สามารถส่งไฟล์ไปยัง DropBox, OSM ฯลฯ
นอกจากนี้ยังส่งข้อมูลไปยัง Event Bus
นี่คือรูปแบบหลักที่มองเห็นได้ในแอป ประกอบด้วย 'ส่วนย่อย' หลายส่วน ได้แก่ มุมมองแบบง่าย มุมมองแบบละเอียด และมุมมองขนาดใหญ่
ดูแลหน้าจอหลัก เมนู และแถบเครื่องมือ
แฟรกเมนต์จะฟัง Event Bus เพื่อเปลี่ยนตำแหน่งและแสดงในลักษณะของตัวเอง
วัตถุอีกสองชิ้นที่ลอยอยู่รอบๆ Session
ประกอบด้วยข้อมูลต่างๆ ที่เกี่ยวข้องกับการใช้งาน GPSLogger ในปัจจุบัน เช่น ชื่อไฟล์ปัจจุบัน ตำแหน่งที่ทราบล่าสุด จำนวนดาวเทียม และข้อมูลอื่น ๆ ที่ไม่คงที่ แต่จำเป็นสำหรับการเรียกใช้ GPSLogger ปัจจุบัน
AppSettings
เป็นตัวแทนของการตั้งค่าของผู้ใช้
ออบเจ็กต์เหล่านี้สามารถมองเห็นได้ทั่วทั้งแอปพลิเคชัน และสามารถเข้าถึงได้โดยตรงโดยคลาส บริการ กิจกรรม หรือส่วนใดๆ
งาน Gradle 'รวบรวม' จะถูกสร้างขึ้นและจะมองหาคีย์ GPG เพื่อลงนาม APK ด้วย ต้องมีการตั้งค่าบางอย่างก่อน:
สร้าง ~/.gradle/gradle.properties
ซึ่งมี release store และรายละเอียดที่สำคัญ รวมถึงรายละเอียดคีย์ GPG
RELEASE_STORE_FILE=/path/to/the.keystore
RELEASE_STORE_PASSWORD=xxxxxxxxxxxxxxxxxx
RELEASE_KEY_ALIAS=gpsloggerkey
RELEASE_KEY_PASSWORD=xxxxxxxxxxxxxxxxxx
signing.gnupg.keyName=xxxxxxxxxxxxxxxxxx
signing.gnupg.passphrase=xxxxxxxxxxxxxxxxxx
ตรวจสอบให้แน่ใจว่าได้ติดตั้ง gpg2 แล้ว
sudo apt install gnupg2
และตรวจสอบให้แน่ใจว่า gnupg.keyname ข้างต้นอยู่ในที่เก็บคีย์ gpg ลองดูโดยใช้ gpg2 --list-secret-keys
เมื่อชิ้นส่วนเหล่านี้พร้อมแล้ว งาน "ประกอบ" ควรสร้าง APK ลงนาม และสร้างเช็คซัมด้วย
หากไม่ปรากฏในโฟลเดอร์ gpslogger ให้เรียกใช้ 'copyFinalAPK' เพื่อคัดลอกไฟล์ APK, ASC และ SHA256 ไปยังโฟลเดอร์ gpslogger
ในที่สุดก็อัปโหลดไปยัง Github Releases
F-Droid เฝ้าดูพื้นที่เก็บข้อมูล Github เพื่อหาแท็ก และจะสร้างแท็กเหล่านั้น และเซ็นชื่อโดยใช้คีย์ของตัวเอง ดังนั้นจึงไม่มีอะไรให้ทำมากเกินไป
ตรวจสอบให้แน่ใจว่า gpslogger/build.gradle versionCode
และ versionName
มีหมายเลขเวอร์ชันล่าสุดที่จะออก
สุดท้ายแท็กการคอมมิต
git tag -s v128
git push origin master --tags
ใช้อิมเมจนักเทียบท่า fdroidserver โคลน repo ข้อมูลเมตา fdroid และทำการเปลี่ยนแปลงไฟล์ com.mendhak.gpslogger.yml
git clone https://gitlab.com/fdroid/fdroiddata.git
cd fdroiddata
# https://f-droid.org/en/docs/Submitting_to_F-Droid_Quick_Start_Guide/
# initialize the metadata repo
docker run --rm -v /home/mendhak/Android/Sdk:/opt/android-sdk -v $(pwd):/repo -e ANDROID_HOME:/opt/android-sdk registry.gitlab.com/fdroid/docker-executable-fdroidserver:master init -v
# lint your metadata yml
docker run --rm -v /home/mendhak/Android/Sdk:/opt/android-sdk -v $(pwd):/repo -e ANDROID_HOME:/opt/android-sdk registry.gitlab.com/fdroid/docker-executable-fdroidserver:master lint com.mendhak.gpslogger -v
docker run --rm -v /home/mendhak/Android/Sdk:/opt/android-sdk -v $(pwd):/repo -e ANDROID_HOME:/opt/android-sdk registry.gitlab.com/fdroid/docker-executable-fdroidserver:master readmeta
# see if the latest tag will get picked up.
docker run --rm -v /home/mendhak/Android/Sdk:/opt/android-sdk -v $(pwd):/repo -e ANDROID_HOME:/opt/android-sdk registry.gitlab.com/fdroid/docker-executable-fdroidserver:master checkupdates --auto com.mendhak.gpslogger
docker run --rm -v /home/mendhak/Android/Sdk:/opt/android-sdk -v $(pwd):/repo -e ANDROID_HOME:/opt/android-sdk registry.gitlab.com/fdroid/docker-executable-fdroidserver:master rewritemeta com.mendhak.gpslogger
# build
docker run --rm -v /home/mendhak/Android/Sdk:/opt/android-sdk -v $(pwd):/repo -e ANDROID_HOME:/opt/android-sdk registry.gitlab.com/fdroid/docker-executable-fdroidserver:master build -v -l com.mendhak.gpslogger