gpt4 book ai didi

javascript - Phonegap 原生安卓插件

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:03 26 4
gpt4 key购买 nike

我尝试在 phonegap/cordova 3.0.0 上运行我的原生 android 插件,但我不工作,

纹波误差: 未捕获的 ReferenceError:未定义 torch

来自 index.html 的调用

<button onclick="torch.shine(200);">dummy</button>

插件.xml

<!-- android -->
<platform name="android">
<config-file target="res/xml/config.xml" parent="/*">

<feature name="Torch">
<param name="android-package" value="org.holzi.torch.Torch"/>
<param name="onload" value="true" />
</feature>

</config-file>

<js-module src="www/torch.js" name="Torch">
<clobbers target="torch" />
</js-module>

<source-file src="src/android/Torch.java" target-dir="src/org/holzi/torch" />

<config-file target="AndroidManifest.xml" parent="/manifest">
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.CAMERA"/>
</config-file>
</platform>

插件www文件夹下的torch.js

var exec = require('cordova/exec');

/* constructor */
function Torch() {}

Torch.shine = function() {
exec(
function(result){ alert('ok: '+reply); },
function(err){ alert('Error: '+err); }
, "Torch", "shine", ['200']);
}



var torch = new Torch();
module.exports = torch;

和 Torch.java

/*

*/
package org.holzi.torch;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;

import android.content.Context;
import android.os.Vibrator;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;


public class Torch extends CordovaPlugin {

Camera camera;
Camera.Parameters Parameters;


public Torch() {

}


public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("shine")) {
this.shine(20);
}
else {
return false;
}

// Only alert and confirm are async.
callbackContext.success();
return true;
}


public void shine(int time) {

//Torch torch = (Torch) this.cordova.getActivity().getSystemService(Context.VIBRATOR_SERVICE);
//torch.shine(time);

camera = Camera.open();
Parameters p = camera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);

}
}

最佳答案

我解决了,这里是代码,如果其他人有同样的问题:

javascript 的索引

<!DOCTYPE html>
<html>
<head>
<title>Notification Example</title>

<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">


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

// Cordova is ready
function onDeviceReady() {
// Empty
}

function shine(torchOn) {
navigator.notification.shine(torchOn);
}

function alertTorchError(message) {
alert(message);
}

</script>
</head>
<body>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="#" onclick="shine(true); return false;">AN</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="#" onclick="shine(false); return false;">AUS</a></p>
</body>
</html>

带有exec的js文件

var exec = require('cordova/exec');
module.exports = {
shine: function(turnOn) {
exec(null, function(error) { alertTorchError(error); }, "Torch", "shine", [turnOn]);

},

};

和java文件

package org.apache.holzi.torch;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
import android.content.Context;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;

import android.content.pm.PackageManager;


/**
* This class provides access to the Torch on the device.
*/
public class Torch extends CordovaPlugin {


Camera camera;
Camera.Parameters Parameters;
boolean hasFlash;


/* Constructor */
public Torch() { }

public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {

if (action.equals("shine")) {

hasFlash = this.cordova.getActivity().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

if (!hasFlash) { callbackContext.error("no torch found"); }
else { this.shine(args.getBoolean(0));

}

}
else {
return false;
}
return true;
}


//--------------------------------------------------------------------------
// LOCAL METHODS
//--------------------------------------------------------------------------


public void shine(boolean turnOn) {



if (camera == null) { camera = Camera.open(); }

if (turnOn) {
Parameters p = camera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
}
else {
Parameters p = camera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
}

}
}

关于javascript - Phonegap 原生安卓插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19095566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com