PhoneGap插件编写
现在随着短视频,抖音,快手的流行NDK模块开发也显得越发重要,需要这块人才的企业也越来越多,随之学习这块的人也变多了,音视频的开发,往往是比较难的,而这个比较难的技术就是NDK里面的技术。音视频/高清大图片/人工智能/直播/抖音等等这年与用户最紧密,与我们生活最相关的技术一直都在寻找最终的技术落地平台,以前是windows系统,而现在则是移动系统了,移动系统中又是以Android占比绝大部分为前提
PhoneGap提供了文件读写的Api,但没有提供列出文件清单的功能。我们编写一个名为 DirectoryListingPlugin 的插件来实现列表SDCARD上文件的功能吧。
2.创建一个Android工程
如下图所示:


3.包含PhoneGap依赖
-
下载PhoneGap并解压
-
在工程根目录新建目录/libs
-
拷贝 phonegap.jar 到 /libs
注:由于是写插件,所以只有phonegap.jar就够了。要建立完整的PhoneGap应用,可参考http://www.phonegap.com/start/#android
4.实现插件类

代码:
[html]
/**
-
* Example of Android PhoneGap Plugin
-
*/
-
package com.trial.phonegap.plugin.directorylisting;
-
import java.io.File;
-
import org.json.JSONArray;
-
import org.json.JSONException;
-
import org.json.JSONObject;
-
import android.util.Log;
-
import com.phonegap.api.Plugin;
-
import com.phonegap.api.PluginResult;
-
import com.phonegap.api.PluginResult.Status;
-
/**
-
* PhoneGap plugin which can be involved in following manner from javascript
-
* <p>
-
* result example -
-
* {“filename”:“/sdcard”,“isdir”:true,“children”:[{“filename”:“a.txt”
-
* ,“isdir”:false},{…}]}
-
* </p>
-
*
-
* <pre>
-
* {@code
-
* successCallback = function(result){
-
* //result is a json
-
*
-
* }
-
* failureCallback = function(error){
-
* //error is error message
-
* }
-
*
-
* DirectoryListing.list(“/sdcard”,
-
* successCallback
-
* failureCallback);
-
*
-
* }
-
* </pre>
-
*
-
* @author Rohit Ghatol
-
*
-
*/
-
public class DirectoryListPlugin extends Plugin {
-
/** List Action */
-
public static final String ACTION = “list”;
-
/*
-
* (non-Javadoc)
-
*
-
* @see com.phonegap.api.Plugin#execute(java.lang.String,
-
* org.json.JSONArray, java.lang.String)
-
*/
-
@Override
-
public PluginResult execute(String action, JSONArray data, String callbackId) {
-
Log.d(“DirectoryListPlugin”, “Plugin Called”);
-
PluginResult result = null;
-
if (ACTION.equals(action)) {
-
try {
-
String fileName = data.getString(0);
-
JSONObject fileInfo = getDirectoryListing(new File(fileName));
-
Log
-
.d(“DirectoryListPlugin”, "Returning "
-
+ fileInfo.toString());
-
result = new PluginResult(Status.OK, fileInfo);
-
} catch (JSONException jsonEx) {
-
Log.d(“DirectoryListPlugin”, "Got JSON Exception "
-
+ jsonEx.getMessage());
-
result = new PluginResult(Status.JSON_EXCEPTION);
-
}
-
} else {
-
result = new PluginResult(Status.INVALID_ACTION);
-
Log.d(“DirectoryListPlugin”, "Invalid action : " + action
-
+ " passed");
-
}
-
return result;
-
}
-
/**
-
* Gets the Directory listing for file, in JSON format
-
*
-
* @param file
-
* The file for which we want to do directory listing
-
* @return JSONObject representation of directory list. e.g
-
* {“filename”:“/sdcard”
-
* ,“isdir”:true,“children”:[{“filename”:“a.txt”
-
* ,“isdir”:false},{…}]}
-
* @throws JSONException
-
*/
-
private JSONObject getDirectoryListing(File file) throws JSONException {
-
JSONObject fileInfo = new JSONObject();
-
fileInfo.put(“filename”, file.getName());
-
fileInfo.put(“isdir”, file.isDirectory());
-
if (file.isDirectory()) {
-
JSONArray children = new JSONArray();
-
fileInfo.put(“children”, children);
-
if (null != file.listFiles()) {
-
for (File child : file.listFiles()) {
-
children.put(getDirectoryListing(child));
-
}
-
}
-
}
-
return fileInfo;
-
}
-
}
5.将插件类导出成jar 包
Eclipse中如下操作:
-
在要生成jar的项目上右击,选择菜单上的Export(导出)
-
导出类型选择Jar File
-
选择或者输入生成路径
-
选择要导出的类
我们导出成directorylist.jar
6.实现JavaScript插件
-
创建一个名为DirectoryListing的类
-
创建一个成员函数list()
-
在成员函数中调用PhoneGap.exec(<>,<>,<>,<>,<>);
-
将js文件保存为directorylisting.js
代码:
[javascript]
/**
-
*
-
* @return Object literal singleton instance of DirectoryListing
-
*/
-
var DirectoryListing = {
-
/**
-
* @param directory The directory for which we want the listing
-
* @param successCallback The callback which will be called when directory listing is successful
-
* @param failureCallback The callback which will be called when directory listing encouters an error
-
*/
-
list: function(directory,successCallback, failureCallback) {
-
return PhoneGap.exec(successCallback, //Success callback from the plugin
-
failureCallback, //Error callback from the plugin
-
‘DirectoryListPlugin’, //Tell PhoneGap to run “DirectoryListingPlugin” Plugin
-
‘list’, //Tell plugin, which action we want to perform
-
[directory]); //Passing list of args to the plugin
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。





既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
结语
- 现在随着短视频,抖音,快手的流行NDK模块开发也显得越发重要,需要这块人才的企业也越来越多,随之学习这块的人也变多了,音视频的开发,往往是比较难的,而这个比较难的技术就是NDK里面的技术。
- 音视频/高清大图片/人工智能/直播/抖音等等这年与用户最紧密,与我们生活最相关的技术一直都在寻找最终的技术落地平台,以前是windows系统,而现在则是移动系统了,移动系统中又是以Android占比绝大部分为前提,所以AndroidNDK技术已经是我们必备技能了。
- 要学习好NDK,其中的关于C/C++,jni,Linux基础都是需要学习的,除此之外,音视频的编解码技术,流媒体协议,ffmpeg这些都是音视频开发必备技能,而且
- OpenCV/OpenGl/这些又是图像处理必备知识,下面这些我都是当年自己搜集的资料和做的一些图,因为当年我就感觉视频这块会是一个大的趋势。所以提前做了一些准备。现在拿出来分享给大家。


《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
所以AndroidNDK技术已经是我们必备技能了。
- 要学习好NDK,其中的关于C/C++,jni,Linux基础都是需要学习的,除此之外,音视频的编解码技术,流媒体协议,ffmpeg这些都是音视频开发必备技能,而且
- OpenCV/OpenGl/这些又是图像处理必备知识,下面这些我都是当年自己搜集的资料和做的一些图,因为当年我就感觉视频这块会是一个大的趋势。所以提前做了一些准备。现在拿出来分享给大家。
[外链图片转存中…(img-2MOIYUX5-1713401949868)]
[外链图片转存中…(img-CPkqyA2Q-1713401949869)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
更多推荐



所有评论(0)