【问题标题】:Javascript can't find these variables, why?Javascript 找不到这些变量,为什么?
【发布时间】:2012-07-12 12:55:18
【问题描述】:

我正在使用 Phonegap 创建一个 Android 应用程序(录音机),但我的代码中有以下 2 个错误:

  1. ReferenceError: Can't find variable: Media.

  2. TypeError: Result of expression 'mediaRec' undefined is not an object.

第一个错误发生在应用程序运行时。第二个错误发生在我调用 recordAudio(); 时。方法。

如果你知道,请告诉我是什么问题。

var mediaRec;
var src;
document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {

}
function init() {
    document.getElementById('status').innerHTML = "Recording Status";
    src = "myrecording.mp3";
    mediaRec = new Media(src, onSuccess, onError);
}

function recordAudio() {
    // Record audio
    mediaRec.startRecord();
    // Stop recording after 10 sec
    var recTime = 0;
    var recInterval = setInterval(function() {
        recTime = recTime + 1;
        setAudioPosition(recTime + " sec");
        if (recTime >= 10) {
            clearInterval(recInterval);
        }
    }, 1000);
}

// Stop audio
function stopRecording() {
    if (mediaRec) {
        mediaRec.stopRecord();
    }
    clearInterval(mediaTimer);
    mediaTimer = null;
}
// onSuccess Callback
function onSuccess() {
    console.log("recordAudio():Audio Success");
}
// onError Callback 
function onError(error) {
    alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n');
}
// Set audio position
function setAudioPosition(position) {
    document.getElementById('rec_position').innerHTML = position;
}

谢谢。

【问题讨论】:

  • 您期望“Media”构造函数来自哪里?你有没有使用合适的东西来导入你需要的包?
  • Media 应该是什么?显然,没有这样的构造函数(mediaRec 之后将是undefined,访问它的属性时会抛出错误)。
  • 什么是Media?您的错误(不是很清楚)告诉您它找不到名为 Media 的函数。
  • 也应该是mediaRec.setAudioPosition()

标签: javascript cordova logcat


【解决方案1】:

我认为 scr = "/android_asset/www/myrecording.mp3" 因为目录 phonegap 在asset/www/... 如果在 phonegap 中找不到目录 javascript 则显示类似 ReferenceError: Can't find variable: Media 的警报。

【讨论】:

    【解决方案2】:

    请务必添加定义全局 Media 构造函数的“cordova-plugin-media”插件。见Cordova media documentation cordova plugin add cordova-plugin-media --save

    这可能发生的另一个原因是一定要等到设备准备好 Cordova 事件后,才能调用 new Media 构造函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多