happyZZR1400
happyZZR1400

Reputation: 2405

android phonegap - navigator.camera is undefined

I'm completely new to phonegap. I started with phonegap build - by running 'npm install -g phonegap'. My system is windows7. When i run the command 'phonegap run android' i'm getting console messages as follows:

 [phonegap] detecting Android SDK environment..
 [phonegap] using the local environment
 [phonegap] compiling Android...
 [phonegap] successfully compiled Android app
 [phonegap] trying to install app onto device
 [phonegap] successfully installed onto device

I can see the app running on my device (sony Xperia -E). But when i put in my javascript code:

bindEvents: function() {
    document.addEventListener('deviceready', this.onDeviceReady, false);
},
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicity call 'app.receivedEvent(...);'
onDeviceReady: function() {
    app.receivedEvent('deviceready');
},


    // Update DOM on a Received Event
receivedEvent: function(id) {

    console.log('Received Event: ' + id);
    //HERE
    alert(navigator.camera)
}

i keep getting alert which say 'undefined'. I checked the same with navigtaor.geolocation, and it wasnt undefined.

I guess it something to do with camera plugin. Am i right?

Please Help

Thanks Forwards

Upvotes: 1

Views: 9277

Answers (5)

Eddie
Eddie

Reputation: 1536

This worked for me, I guess someone needs to make a release.

cordova plugin remove cordova-plugin-camera && cordova plugin add https://github.com/apache/cordova-plugin-camera

Upvotes: 0

diogo
diogo

Reputation: 3977

It is supposed to have the cordova-plugin-camera plugin added to your PhoneGap/Cordova project, so just this way you'll get the example working.

See the right command:

cordova plugin add cordova-plugin-camera

Upvotes: 2

happyZZR1400
happyZZR1400

Reputation: 2405

After looking itno this project i figured out where was my mistake

I tried to use the 'ondeviceready' eventhandler which comes with index.js.

Dont know why yet, but this handler fires when camera is undefined. After i specified my own handler on the page

document.addEventListener("deviceready",onDeviceReady,false);


function onDeviceReady() {
    alert(navigator.camera);    
}

camera became defined

Upvotes: 2

Emil Borconi
Emil Borconi

Reputation: 3467

Before running phonegap application, make sure you add the lib:

phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-camera.git
phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-media-capture.git
phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-media.git

If you omit loading the plugin before building the app it will not work, I also had problems sometimes with installed plugins, so if you did install them, try removing and re-adding them, that worked for me. You can check what plugins are installed by:

phonegap local plugin list

For more information please visit: Official Phonegap Documenattion

Regarding: navigtaor.geolocation it is a standard HTML5 call so if the geolocation plugin is not installed (at least on Android) it will be interpreted as a standard HTML5 geolocation call.

Upvotes: 1

Avijit
Avijit

Reputation: 3824

You have to add these things:

--> app/res/xml/plugins.xml

<plugin name="Camera" value="org.apache.cordova.CameraLauncher" />

--> app/AndroidManifest

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Upvotes: 4

Related Questions