Below is a simple python script to automate location updates to the emulator.
Monday, 4 August 2014
Python Script for Location Updates
Posted by
Karun
at
05:57
Labels:
Android,
AOSP,
Emulator,
GPS,
Location,
LocationManager,
Python
0
comments
Saturday, 2 August 2014
Location Updates within a Service
Requesting location updates within a remote service may cause the following exception:
runException Can't create handler inside thread that has not called Looper.prepare()
The requestLocationUpdates() function requires access to a Looper to deal with messages in a queue. When calling this method in a background service, the method may not implicitly have access to the threads Looper. Defining the thread's Looper explicitly by adding an additional argument 'Looper.getMainLooper()' deals with the issue.
runException Can't create handler inside thread that has not called Looper.prepare()
The requestLocationUpdates() function requires access to a Looper to deal with messages in a queue. When calling this method in a background service, the method may not implicitly have access to the threads Looper. Defining the thread's Looper explicitly by adding an additional argument 'Looper.getMainLooper()' deals with the issue.
Friday, 1 August 2014
Dealing with System Service Dependencies
As an example of a case where a system service depends on another, below is the constructor for a 'test' service which when constructed, initializes a location manager.
The 'test' service requires that the 'LocationManagerService' is running before 'test' is created so that it can successfully initialize a location manager.
When Android is started, 'init' is a component of the bootloader sequence which initializes a number of daemons which run continuously whilst the operating system is running.
One of those daemons 'Zygote' is the process responsible for starting system services. It does this by executing the initAndLoop() function of the SystemServer Class.
SystemServer located in frameworks/base/services/java/com/android/server/SystemServer.java
In order to ensure 'LocationManagerService' is running before 'test' service, place the 'test' service's addService code anywhere below that of the 'LocationManagerService'.
The 'test' service requires that the 'LocationManagerService' is running before 'test' is created so that it can successfully initialize a location manager.
When Android is started, 'init' is a component of the bootloader sequence which initializes a number of daemons which run continuously whilst the operating system is running.
One of those daemons 'Zygote' is the process responsible for starting system services. It does this by executing the initAndLoop() function of the SystemServer Class.
SystemServer located in frameworks/base/services/java/com/android/server/SystemServer.java
In order to ensure 'LocationManagerService' is running before 'test' service, place the 'test' service's addService code anywhere below that of the 'LocationManagerService'.
Saturday, 26 July 2014
GPS Location updates in AOSP Emulator
Mock GPS location values can be set once the emulator is running by connecting to the virtual device via telnet on port 5554 and using the 'geo fix' command to set longitude and latitude values.
More info at http://developer.android.com/tools/help/emulator.html
More info at http://developer.android.com/tools/help/emulator.html
Wednesday, 23 July 2014
Using Google Cloud Messaging with AOSP
Google Cloud Messaging for Android (GCM) may have once an open source library within AOSP but the service has since been superseded by GCM within Google Play Services.
Google Play Services being proprietary software is not included in AOSP hence using GCM with open code requires use of the now deprecated GCM library.
The GCM repository is available from
https://code.google.com/p/gcm/source/checkout
As I am using GCM on the client side, the folder of interest to me is gcm/gcm-client-deprecated
If using GCM within the android's services, the library must be included to be built with the Android framework by copying it to the framework directory.
After rebuilding Android, GCM would be included in the framework and can be imported by apps/services eg. if using the GCM Registrar, import as follows.
Google Play Services being proprietary software is not included in AOSP hence using GCM with open code requires use of the now deprecated GCM library.
The GCM repository is available from
https://code.google.com/p/gcm/source/checkout
As I am using GCM on the client side, the folder of interest to me is gcm/gcm-client-deprecated
If using GCM within the android's services, the library must be included to be built with the Android framework by copying it to the framework directory.
After rebuilding Android, GCM would be included in the framework and can be imported by apps/services eg. if using the GCM Registrar, import as follows.
Subscribe to:
Posts (Atom)