diff --git a/apps/tests/camera-tests.ts b/apps/tests/camera-tests.ts
index 639de8147..ca2f74262 100644
--- a/apps/tests/camera-tests.ts
+++ b/apps/tests/camera-tests.ts
@@ -2,6 +2,8 @@
import camera = require("camera");
// << camera-require
+import TKUnit = require("./TKUnit");
+
export var test_takePicture = function () {
// >> camera-take-picture
camera.takePicture().then(result => {
@@ -9,3 +11,10 @@ export var test_takePicture = function () {
});
// << camera-take-picture
};
+
+export var test_isCameraAvailable = function () {
+ // >> camera-is-availabile
+ var availability = camera.isAvailable();
+ // >> camera-is-availabile
+ TKUnit.assertTrue(availability == true || availability == false, "Availability should return a Boolean");
+};
\ No newline at end of file
diff --git a/apps/tests/camera.md b/apps/tests/camera.md
index 9feea38d3..34f1aa89e 100644
--- a/apps/tests/camera.md
+++ b/apps/tests/camera.md
@@ -10,3 +10,6 @@ Using a camera requires the camera module.
### Taking a picture.
+
+### Check for availability
+
\ No newline at end of file
diff --git a/camera/Readme.md b/camera/Readme.md
index 582581ad9..7ec0ba343 100644
--- a/camera/Readme.md
+++ b/camera/Readme.md
@@ -8,4 +8,7 @@ camera.takePicture({"cameraPosition": camera.CameraPosition.BACK, "flashMode": c
console.log('pic canceled');
});
+if(camera.isAvailable()){
+ console.log('you may take a picture');
+}
```
diff --git a/camera/camera.android.ts b/camera/camera.android.ts
index 82a7485bf..3731cd0da 100644
--- a/camera/camera.android.ts
+++ b/camera/camera.android.ts
@@ -106,6 +106,12 @@ export var takePicture = function (options?): Promise {
});
}
+export var isAvailable = function () {
+ var utils: typeof utilsModule = require("utils/utils");
+
+ return utils.ad.getApplicationContext().getPackageManager().hasSystemFeature(android.content.pm.PackageManager.FEATURE_CAMERA)
+}
+
var calculateInSampleSize = function (imageWidth, imageHeight, reqWidth, reqHeight) {
var sampleSize = 1;
if (imageWidth > reqWidth && imageHeight > reqHeight) {
diff --git a/camera/camera.d.ts b/camera/camera.d.ts
index 0b9132892..d9e5562ca 100644
--- a/camera/camera.d.ts
+++ b/camera/camera.d.ts
@@ -10,6 +10,11 @@ declare module "camera" {
* @param options - Optional parameter for setting different camera options.
*/
export function takePicture(options?: CameraOptions): Promise;
+
+ /**
+ * Is the camera available to use
+ */
+ export function isAvailable(): Boolean;
export interface CameraOptions {
/**
diff --git a/camera/camera.ios.ts b/camera/camera.ios.ts
index 23c57dee6..400a28a49 100644
--- a/camera/camera.ios.ts
+++ b/camera/camera.ios.ts
@@ -124,3 +124,7 @@ export var takePicture = function (options): Promise {
}
});
}
+
+export var isAvailable = function () {
+ return UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.UIImagePickerControllerSourceTypeCamera);
+}