2

ここに初めて投稿するので、この質問が間違っている場合、または問題がある場合は申し訳ありません.

私は、タブレット (この場合はアンドロイド) と Win CE PC 間の Bluetooth 接続をセットアップできるようにする必要がある phonegap アプリに取り組んでいます。現在、私は Bluetooth 部分をタブレットで動作させようとしており、https://github.com/tanelih/phonegap-bluetooth-plugin にあるプラグインを使用しています。デバイスで Bluetooth を有効または無効にしようとしています。

私のbluetoothpage.jsファイルでは、次の方法を使用しています

window.bluetooth.prototype.enable(bluetoothTestSucces(),bluetoothTestFail());

bluetoothTestSucces および bluetoothTestFail 関数はアラートを表示するだけで、他には何も表示しません。phonegap プラグインの動作を正しく理解していれば、bluetooth.js ファイルで次のコードを使用します。

Bluetooth.prototype.enable = function(onSuccess, onError)

{
    exec(onSuccess, onError, "Bluetooth", "enable", []);
}

呼び出す

private void enable(JSONArray args, CallbackContext callbackCtx)

{       
    try
    {
        _bluetooth.enable();
        callbackCtx.success();
    }
    catch(Exception e)
    {
        this.error(callbackCtx, e.getMessage(), BluetoothError.ERR_UNKNOWN);
    }
}

私の BluetoothPlugin.java ファイルで。

そして、Java ファイルが Succes を返す場合は bluetoothTestSucces() が使用され、Java ファイルがエラーを返す場合は bluetoothTestFail() が使用されます。

しかし、何らかの理由で両方を実行し、デバイスで Bluetooth をオンにしません。ファイルへのリンクを忘れたか、どこかで間違ってリンクしたことはほぼ確実です。しかし、プラグインに含まれていた指示に従いました。

アプリのルート ディレクトリにある AndoridManifest ファイルに Bluetooth のアクセス許可を含めました。

res/xml にある config.xml ファイルにプラグインを含めました。

次のように、deviceready イベントの後にプラグインを要求しました

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

関数 onDeviceReady() {

window.bluetooth = cordova.require("cordova/plugin/bluetooth");

}

これを修正する方法、または私が間違ったことを誰か教えてもらえますか?

更新 1

最終的にEclipseを使用してデバッグを行うことができるようになった後、次のエラーが発生しました: Uncaught TypeError: Cannot call method 'enable' of undefined.

更新 2

メソッドの呼び出しが間違っていたと思います。window.bluetooth.prototype.enable ではなく、window.bluetooth.enable にするべきでした。次のエラーが表示されます。

「Bluetooth バインダーが null です」タグ「BluetoothAdapter」

また、エミュレーターで実行すると、bluetoothTestFail() 関数のみが表示されますが (これが本来あるべき状態です)、デバイスで実行しても何も起こらず、関数が呼び出されず、Bluetooth のオン/オフも行われません。

アップデート 3

デバイスのアプリとしてEclipseを介してプロジェクトを実行しましたが、問題なく動作します。しかし、phonegap を使用してアプリに変換すると、機能しなくなります。

ありがとう

マルティン

PS: 英語は私の母国語ではありません。

編集:いくつかのコードを含めるのを忘れていました

4

1 に答える 1

0

経由でメソッドを呼び出しているようですprototype。含まれているファイルを見ると、bluetooth.js次の行が含まれていることがわかります。

var bluetooth = new Bluetooth();
module.exports = bluetooth;

これは基本的にBluetooth、メソッドを直接呼び出すことができるインスタンスをプラグインが「エクスポート」することを意味します。

あなたの投稿では、次のようにコールバックも渡していると言っています。

window.bluetooth.prototype.enable(bluetoothTestSucces(),bluetoothTestFail());

これは、 関数bluetoothTestSuccesbluetoothTestFail関数の両方が呼び出され、代わりにそれらの戻り値が渡されることを意味します。

このようにメソッドを呼び出してみて、動作するかどうかを確認してください。

window.bluetooth.enable(bluetoothTestSucces, bluetoothTestFail);

うまくいけば、これが役に立ちます!

編集

少なくとも何らかの形で機能したと聞いてうれしいです。

PhoneGap を使ってアプリに変換するとはどういう意味ですか? 私は自分でEclipseを介してAndroidプロジェクトを実行したことがあるだけなので、何が問題を引き起こしているのかわかりません。

基本的なデバッグをファイルに追加しconsole.logbluetooth.js、プラグイン メソッドが呼び出されているかどうかを確認できます。Java ファイルに対しても同じことを行って、原因を突き止めるのに役立つかどうかを確認できます。

うまくいくことを願っています。

于 2013-10-25T08:19:21.137 に答える