【问题标题】:cordova 3.4 create custom plugincordova 3.4 创建自定义插件
【发布时间】:2014-06-01 19:38:38
【问题描述】:

我正在尝试为 Cordova 3.4 创建自己的 Android 插件。

插件必须简单地调用 Android mediaRecorder,从麦克风录制 7 秒,在 SD 卡上创建文件并停止录制。

当我尝试从我的 Cordova / Ionic 项目中调用插件时,我不断收到“找不到类”错误,无需进一步说明。

Java 如下所示:

    package com.example.myplugin;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONObject;
import org.json.JSONArray;
import org.json.JSONException;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Environment;

public class Recorder extends CordovaPlugin {

    @Override
    public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException {
        String outputFile = null;
        final MediaRecorder myRecorder;

        outputFile = Environment.getExternalStorageDirectory().
                  getAbsolutePath() + "/TestRecording.m4a";

        myRecorder = new MediaRecorder();
        myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        myRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        myRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
        myRecorder.setAudioSamplingRate(44100);
        myRecorder.setAudioChannels(1);
        myRecorder.setAudioEncodingBitRate(32000);
        myRecorder.setOutputFile(outputFile);

        try 
        {
              myRecorder.prepare();
              myRecorder.start();
        }
        catch (Exception e) {
            callbackContext.error(e.getMessage());   
            return false;   
        }

        CountDownTimer countDowntimer = new CountDownTimer(7000, 1000) {
        public void onTick(long millisUntilFinished) {}

        public void onFinish() {
            myRecorder.stop();
            myRecorder.release();           

            //Sets the callback type and sets the return to true to define successful.      
            callbackContext.success();
            //return true;
        }
        };

        countDowntimer.start();

        return true;

    }

    }

JS看起来如下:

    var RecordAudio = {
    recordAudio: function(successCallback, errorCallback) {
        cordova.exec(
            successCallback, // success callback function
            errorCallback, // error callback function
            'Recorder', // mapped to our native Java class called "Recorder"
            'recordAudio', // with this action name
            []                  //Array of arguments to pass
        ); 
    }
};

    module.exports = RecordAudio;

插件XML如下:

    <?xml version="1.0" encoding="UTF-8"?>

<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
           id="com.mytest.recorder"
      version="0.1.0">
  <name>Recorder</name>

  <description>Android Recorder plugin</description>        


    <js-module src="www/Recorder.js" name="Recorder">   
        <clobbers target="window.RecordAudio" />     
    </js-module>

    <!-- android -->
    <platform name="android">
        <config-file target="res/xml/config.xml" parent="/*">
            <feature name="Recorder">
                <param name="android-package" value="Recorder"/>
            </feature>
        </config-file>

        <source-file src="src/Recorder.java" target-dir="com/mytest/recorder/" />      
     </platform>          
</plugin>

这样称呼它:

var onSuccess = function(dataReturned){
      console.log(dataReturned);

    }

    var onFailure = function(dataReturned){
      console.log(dataReturned);

    }

    RecordAudio.recordAudio(onSuccess, onFailure);

谁能看到导致此错误的 Java 有什么问题?

非常感谢您的任何反馈!!!

【问题讨论】:

    标签: android cordova plugins record


    【解决方案1】:

    您是否已将插件添加到 config.xml 文件中??

    应该是这样的

    <feature name="Recorder" >
            <param name="android-package" value="com.example.myplugin.Recorder " />
    </feature>
    

    如果是,请提供堆栈跟踪以获得更好的信息。

    编辑1: 刚刚看到 plugin.xml .. 我认为它已被删除,因为我只能通过将代码放入 Config.xml 来让我的插件工作

    【讨论】:

      猜你喜欢
      • 2017-04-19
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 2019-12-11
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多