Connect your Android phone to external Bluetooth GPS, GLONASS, Galileo and BeiDou receivers and use the received location in your android phone via the mock location provider.
Official app is available on Google Play as Bluetooth GNSS.
Install the the Flutter SDK as per official instructions including the 'Android setup' and make sure that the Android SDK is installed.
Make sure the flutter sdk version matches that of below:
flutter downgrade v<flutter ver in pubspec.yaml>
In this folder run:
flutter pub get
If you modify the rust code then update with (first install same ver to match that of flutter_rust_bridge in pubspec.yaml - see https://cjycode.com/flutter_rust_bridge/quickstart)
flutter_rust_bridge_codegen generate
If you don't already have an android signing key, create one as per: https://docs.flutter.dev/deployment/android#create-an-upload-keystore
Create the file key.properties
in parent of this folder and add your keystore information:
storeFile=/path/to/keystore.jks
storePassword=*********
keyAlias=bluetooth_gnss
keyPassword=**********
Connect an android phone with adb working
adb devices
Try build and run the app in debug mode:
flutter run
If all went well, you would see the app now run in your connected phone.
Try build a release android installer (apk) file:
flutter build apk
If all went well, it would create the apk file in the folder:
build/app/outputs/flutter-apk/app-release.apk
Develop in Android studio:
Use the flutter build apk
command when you want to build a release apk file.
I'm using Tasker to send the intent, but other methods are possible
On the TASKS
tab, create a new task (e.g. Connect GPS) and add the action Send Intent. It is configured as follows:
bluetooth.CONNECT
Default
text/plain
com.clearevo.bluetooth_gnss
Broadcast Receiver
json string in Extra field
Add this string without newlines. All values are optional. Note that config
is without double quotes
config: {
"bdaddr": "%bt_address",
"secure": false,
"reconnect": true,
"log_bt_rx": true,
"disable_ntrip": true,
"extra": {
"ntrip_user": "taskeruser",
"ntrip_mountpoint": "taskermount",
"ntrip_host": "taskerhost",
"ntrip_port": "2000",
"ntrip_pass": "taskerpass"
}
}
Example
If you only want to override the bluetooth address, you can send this as extra:
config: {bdaddr:"%bt_address"}
If you don't use the BT Connection Event (see below) but the BT Connection state, you have to use the real address of your device:
config: {bdaddr: "00:11:22:33:44:55:66"}
If you want to disable ntrip as well:
config: {bdaddr: "00:11:22:33:44:55:66", disable_ntrip: true}
On the PROFILES
tab, you can use a state change or a event. In this example, I'm using the BT Connection event with the following conditions:
%bt_connected EQ true
$bt_address EQ 00:11:22:33:44:55:66
, the bluetooth address of the GPS receiverThis will trigger the event only when my GPS receiver is connected. You can add multiple devices here, which is why I choose this method: in the action, the variable %bt_address
will be available as well and I'll use that to pass to Bluetooth GNSS.
git shortlog -sne
in this git repo.Copyright (C) 2019 Kasidit Yusuf and all respective project source code contributors.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.