angular-phonegap is a module for Cordova/PhoneGap for a smooth integration with AngularJS. You can stop
worrying about deviceready
and focus more on your application.
Handling the deviceready
event is done using Brian Ford's excellent solution, https://github.com/btford/angular-phonegap-ready, to provide seamless integration with Phonegap.
The API's in this library are identical to the PhoneGap/Cordova API's, so you should check the documentation there: http://docs.phonegap.com. A little more information on how to handle information in callbacks is provided below.
In your application module, put
angular.module('myApp', ['PhoneGap']);
This will make the wrappers available to your application and will register the required event listeners.
Adding Accelerometer
as a dependency in your controller will enable you to use the methods of the Accelerometer
object. These methods are identical to the Cordova/PhoneGap methods but they will only trigger the callback when the
device is ready (deviceready
event). Because the callback methods are invoked from outside Angular, you need to use
$scope.$apply
.
angular.module('myApp')
.controller('MyController', function($scope, Accelerometer) {
Accelerometer.getCurrentAcceleration(function(acceleration) {
$scope.$apply(function() {
$scope.acceleration = acceleration;
});
}, function(error) {
$scope.$apply(function() {
$scope.error = error;
});
}, {
frequency: 1000
});
});
Adding Camera
as a dependency in your controller will enable you to use the methods of the Camera
object. These
methods are identical to the Cordova/PhoneGap methods but they will only trigger the callback when the device is ready
(deviceready
event). Because the callback methods are invoked from outside Angular, you need to use $scope.$apply
.
Cordova/PhoneGap uses a couple of constants of a global Camera
variable. These constants are literaly mirrored in the
Angular Camera
wrapper, i.e. [window.]Camera.EncodingType
(the global constant) is available as
Camera.EncodingType
(a property in the Angular Camera
). The same principle is applied to the other constants.
Example:
angular.module('myApp')
.controller('MyController', function($scope, Camera) {
Camera.getPicture(function(image) {
$scope.$apply(function() {
$scope.imageData = image;
});
}, function(error) {
$scope.$apply(function() {
$scope.error = error;
});
}, {
destinationType: Camera.DestinationType.FILE_URL,
sourceType: Camera.PictureSourceType.CAMERA,
encodingType: Camera.EncodingType.JPEG,
quality: 50
});
});
TODO
Adding Compass
as a dependency in your controller will enable you to use the methods of the Compass
object. These
methods are identical to the Cordova/PhoneGap methods but they will only trigger the callback when the device is ready
(deviceready
event). Because the callback methods are invoked from outside Angular, you need to use $scope.$apply
.
Example:
angular.module('myApp')
.controller('MyController', function($scope, Compass) {
Compass.getCurrentAcceleration(function(heading) {
$scope.$apply(function() {
$scope.heading = heading;
});
}, function(error) {
$scope.$apply(function() {
$scope.error = error;
});
}, {
frequency: 1000
});
});
TODO
Adding Geolocation
as a dependency in your controller will enable you to use the methods of the Geolocation
object.
These methods are identical to the Cordova/PhoneGap methods but they will only trigger the callback when the device is
ready (deviceready
event). Because the callback methods are invoked from outside Angular, you need to use
$scope.$apply
.
Example:
angular.module('myApp')
.controller('MyController', function($scope, Geolocation) {
Accelerometer.getCurrentAcceleration(function(position) {
$scope.$apply(function() {
$scope.position = position;
});
}, function(error) {
$scope.$apply(function() {
$scope.error = error;
});
}, {
frequency: 1000
});
});
TODO
TODO
TODO
TODO