Skip to main content

Use External Bluetooth GPS receiver

#1 Make sure your Android has developer settings

Recent Android operating systems don't have developer settings available by default, and the location of those settings is in different places on different OS versions. On older OSs, you can find the developer settings in the Android Settings app, under Applications > Development. On newer OSs, "Developer options" are at the top level of Android Settings, but you may need to make them visible. You do that by opening Android Settings > "About phone" and then scrolling down to find the "Build number." Tap the build number about 7 times and you'll see messages that count down until you "become a developer." (If you see Setting / "Developer Options", then you are already a developer!)


#2 Turn on "Allow mock locations."

Check the "Allow mock locations" in Android Settings' developer settings. This is required for the Bluetooth GPS app to make the GPS receiver's location data available to ANDMAP, bypassing the built-in GPS.

#3 Turn off internal GPS
#4 Turn off Wi-Fi, Data Connection(save battery)
#5 Turn on bluetooth
#6 Pair bluetooth GPS



Popular posts from this blog

useRef in store.subscribe, re-render

const Dashboard : React . FC = () => { const store = createStore ( countReducer ) const divRef = useRef < HTMLDivElement >( null ); store . subscribe (() => { const state = store . getState () if ( divRef . current ) divRef . current . innerText = `this is cool, another listener: ${ state . count } ` ; }) return ( ... < button onClick = { () => store . dispatch ({ type : ActionType . INCREMENT }) } > add </ button > < button onClick = { () => store . dispatch ({ type : ActionType . DECREMENT }) } > minus </ button > < div ref = { divRef } > 0 </ div > ... ) } Re-Render: const count = useRef ( 0 ) ; useEffect ( ( ) => { count . current = count . current + 1 ; } ) ; return ( < > < input type = " text " value = { inputValue } onChange = { ( e ) => setInputValue ( e . target . value ) } /...

setup prettier / eslint for create-react-app typescript

1. npm i -D prettier  2. create .prettierrc.json { "trailingComma": "all", "tabWidth": 2, "singleQuote": true, "jsxBracketSameLine": true,    "semi": false } 3. npm i -D eslint-config-prettier 4. in package.json, add this: "eslintConfig": { "extends": [ "react-app", "react-app/jest", "prettier" ] }, 5. install extension in VS Code Prettier extension

API layer in React with Axios

  Why You Need an API Layer  https://semaphoreci.com/blog/api-layer-react 3. Easily handle request cancellation Thanks to the centralized nature of the API layer, you can effortlessly add custom features like cancellation to all API request definitions. Your frontend application performs API calls asynchronously. This means that when calling the same API twice in a short amount of time, the response to the first request may arrive after the response to the second one. Because of this, your application may render inconsistent data. A popular approach to deal with this problem is the debounce technique. The idea behind debounce is to wait a certain amount of time before executing the same operation twice. Implementing this and finding the right debounce time value for each scenario, however, is not easy. For this reason, you should consider API request cancellation. With request cancellation, the new API request simply cancels the previous one of the same type. API request cance...