AndroidJs手机开发-接口

WIFI

app.wifi 是 Wi-Fi API 的实例,它提供从应用程序访问 Wi-Fi 的功能。要使用此 API,您需要在 package.json 文件中添加这些权限。

android.permission.ACCESS_WIFI_STATE
android.permission.CHANGE_WIFI_STATE

Wi-Fi API 的工作示例

new Promise(function(resolve, reject){
    app.wifi.enable();
    setTimeout(resolve, 5000);
}).then(function(){
    available_networks = app.wifi.getScanResult();
    available_networks.forEach(function(network){
        if(network.SSID == "test"){
            app.wifi.connect(network.SSID, "");
        }
    });
});

方法

app.wifi.enable()
启用 Android 设备的 Wi-Fi 功能。

以下代码示例

app.wifi.enable();

app.wifi.disable()
禁用 Android 设备的 Wi-Fi 功能(如果已启用)。

以下代码示例

app.wifi.disable();

app.wifi.connect(SSID, password)

  • SSID String
    要连接的网络的 SSID。
  • password String
    要连接的网络的密码。

注意: 如果要连接开放网络,请提供密码 = ""
将 Wi-Fi 连接到提供的 SSID 网络。

以下代码示例

app.wifi.connect("test", "");

app.wifi.disconnect()
断开当前连接网络的 Wi-Fi 连接。
以下代码示例

app.wifi.disconnect();

app.wifi.getScanResults()
返回包含当前可用 wifi 网络详细信息的 JSON 对象数组。

以上代码示例

let networks = app.wifi.getScanResults();
networks.forEach(function(network){
    console.log(network.SSID);
})

app.wifi.getState()
返回 Wi-Fi 的当前状态。

以下代码示例

console.log(app.wifi.getState());

app.wifi.isEnabled()
如果 Wi-Fi 已启用,则返回 true,否则返回 false。

以下代码示例

console.log(app.wifi.isEnabled());

热点Hotspot

app.hotspot 是 Hotspot API 的实例,它提供了从你的应用程序访问 Hotspot 的功能。要使用该 API,您需要在 package.json 文件中添加这些权限。

android.permission.ACCESS_WIFI_STATE
android.permission.CHANGE_WIFI_STATE

热点应用程序接口工作示例

app.hotspot.enable("hello");
console.log(app.hotspot.isEnabled());

方法

app.hotspot.enable(ssid)

  • ssid 字符串
    要创建的网络的 ssid 名称。
    启用 Android 设备的热点。
app.hotspot.enable("hello");

app.hotspot.disable()
禁用安卓设备的热点(如果已启用)。

app.hotspot.disable();

app.hotspot.isEnabled()
如果启用了热点,则返回 true,否则返回 false。

console.log(app.hotspot.isEnabled());

摄像头

相机 API 提供与相机交互的各种功能。要使用此 API,必须在 package.json 文件中添加此权限。

android.permission.CAMERA

下面的示例展示了如何在应用程序中启动摄像头

// In front process (web pages)
<html>
    <head>
        // add androidjs.js to get the API's of `Android JS`.
        <script src = "./assets/ipc/androidjs.js" ></script>
    </head>
    <body>
        <video id = "camera" autoplay></video>
    </body>
    <script>
        window.onload = function(){
            app.camera.init(document.getElementById('camera'), {video:true, audio: false});
        }
    </script>
</html>

方法

app.camera.init(dom, options)

  • dom 是 HTML dom,用于初始化相机。
  • options 是一个 JavaScript 对象,用于定义服务
    • video 可以是 true/false 或一个对象 {deviceId: {exact: devices[0]}}
    • audio:可以是 true/false 或对象 {deviceId: {设备[0]}}。
app.camera.init(document.getElementById('camera'), {video: true, audio: false});

app.camera.getDevices(callback)

  • callback Function
    • devices 是视频设备列表

开始收集所有可用视频设备的信息,完成后调用 callback(设备)。

app.camera.getDevices(function(devices){
    console.log(devices);
})

app.camera.startRecording(options)

  • options Object
    • mimeType 视频类型或编解码器(例如:video/webm;codecs=vp9)
    • bitsPerSecond 每秒比特率(例如 100000)
app.camera.startRecording({mimeType: 'video/webm;codecs=vp9', bitsPerSecond: 100000});

app.camera.stopRecording()

app.camera.stopRecording();

app.camera.saveRecording(filepath, filename, options)

  • filepath 存储录制视频的文件路径(例如 /storage/emulated/0/)。
  • filename 文件名
  • options Object
    • type 视频类型(如视频/Webm)
app.camera.saveRecording('/storage/emulated/0/', 'newVideo1.webm', {type:'video/webm'})

app.camera.previewRecording(dom, options)

  • dom 预览录制视频的位置
  • options Object
    • type 视频类型(如视频/网络视频)
// <video id = "preview" autoplay></video>
app.camera.previewRecording(document.getElementById('preview'), {type: 'video/webm'});

app.camera.getBuffer(options, callback)

  • callback Function
    • buffer
  • options Object
    • type video type (i.e. video/webm)
app.camera.getBuffer({type: 'video/webm'}, function(buffer){
    ...
});

app.camera.takePhoto(cameraDom, previewDom)

  • cameraDom 已初始化摄像机的 dom
  • previewDom 是可选项,如果要预览捕获的图像,请提供用于预览的 dom,否则不提供
// <img id = "preview" autoplay></img>
app.camera.takePhoto(document.getElementById('camera'), document.getElementById('preview'));

app.camera.savePhoto(filepath, filename)

  • filepath 存储拍摄照片的文件路径(例如:/storage/emulated/0/)。
  • filename 文件名
// <img id = "preview" autoplay></img>
app.camera.savePhoto('/storage/emulated/0/', 'test.webp');

麦克风

麦克风 API 提供与麦克风交互的各种功能。要使用此 API,您需要在 package.json 文件中添加这些权限。

android.permission.RECORD_AUDIO
android.permission.MODIFY_AUDIO_SETTINGS

下面的示例展示了如何在应用程序中录制音频

// In front process (web pages)
<html>
    <head>
        // add androidjs.js to get the API's of `Android JS`.
        <script src = "./assets/ipc/androidjs.js" ></script>
    </head>
    <script>
        window.onload = function(){
            app.microphone.getDevices(function(devices){
                app.microphone.startRecording({audio:{deviceId:{exact: devices[1]}}});
            });
        }
    </script>
</html>

方法

app.microphone.getDevices(callback)

  • callback Function
    • devices 是音频设备列表

开始收集所有可用音频设备的信息,完成后调用 callback(设备)。

app.microphone.getDevices(function(devices){
    console.log(devices);
})

app.microphone.startRecording(options)

  • options Object
    • audio 音频,可以是 true/false 或对象 {deviceId: {exact: devices[0]}}
app.microphone.startRecording({audio:true);
                        or
app.microphone.getDevices(function(devices){
    app.microphone.startRecording({audio:{deviceId:{exact: devices[1]}}});
});

app.microphone.stopRecording()

app.microphone.stopRecording();

app.microphone.saveRecording(filepath, filename, options)

  • filepath 文件路径,用于存储录制的音频(例如 /storage/emulated/0/)。
  • filename 文件名
  • options Object
    • type 音频类型(例如:音频/webm)
app.microphone.saveRecording('/storage/emulated/0/', 'newAudio1.webm', {type:'audio/webm'})

app.microphone.previewRecording(dom, options)

  • dom 预览已录制音频的位置
  • options Object
    • type 音频类型(如音频/Webm)
// <audio id = "preview" autoplay></audio>
app.camera.previewRecording(document.getElementById('preview'), {type: 'audio/webm'});

app.microphone.getBuffer(options, callback)

  • callback Function
    • buffer
  • options Object
    • type audio type (i.e. audio/webm)
app.microphone.getBuffer({type: 'audio/webm'}, function(buffer){
    ...
});

通知

app.notification 是通知 API 的实例,它提供了初始化通知和在需要时显示通知的函数。

有两种通知

  • 单行通知
  • 多行通知
app.notification.init("Update", "1.2.5 is available");
app.notification.initBig("Update", ["there are lot's of changes", "in this version", "would you like to install"]);
app.notification.show(2);

方法

app.notification.init(title, msg)

  • title String
  • msg String

您需要提供标题和 msg 来初始化您的通知。

app.notification.init("Update", "1.2.5 is available");

app.notification.initBig(title, msg)

  • title String
  • msg Array of Strings

用于初始化通知的已用视图,为此您需要提供标题和字符串数组(此函数为可选项)。注意:数组的最大大小为 6

app.notification.init("update", "1.2.5 update available");
app.notification.initBig("Update", ["there are lot's of changes", "in this version", "would you like to install"]);

app.notification.show(id)

  • id Int

此功能用于显示已初始化的通知。

app.notification.show(1);

屏幕消息Toast

app.toast 是 Toast API 的实例,它提供了显示本地屏幕消息的函数。

app.toast.show("Hello Android JS", 1);

方法

app.toast.show(text, duration)

  • text String
  • duration Int
    • 0 表示短
    • 1 表示长
app.toast.show("Hello Android JS", 0);

联系人

app.contact 是 Contact API 的实例,它提供了从应用程序访问联系人的功能。要使用此 API,您需要在 package.json 文件中添加这些权限。

android.permission.READ_CONTACTS
android.permission.WRITE_CONTACTS
var contacts = app.contact.getAll();
console.log(contacts);

方法

app.contact.getAll()
返回包含用户手机中所有可用联系人详细信息的 JSON 对象数组。

let contacts = app.contact.getAll();
contacts.forEach(function(contact){
    console.log(contact.name, contact.phone_number, contact.email);
})

app.contact.add(name, number, email)

  • name String
    要添加联系人的姓名。
  • number String
    要添加到联系人中的号码。
  • email String
    要添加到联系人中的电子邮件(电子邮件为可选项)。

将给定的联系人信息添加到用户的手机中。
注意:它返回一个 JSON 对象,{error:true/false, msg:'error msg'} 如果联系人添加成功,则错误为 false,否则为 true。

let name = 'alex';
let number = '123457896'
let email = 'example@androidjs.com'
let status = app.contact.add(name, number, email);
if(!status.error){
    console.log('contact added to phone');
}else{
    console.log(status.error, status.msg);
}

app.contact.getByName(name)

  • name String
    • name 要搜索的名称。

注:如果找到记录,则返回 uesr 详细信息的 JSON 对象,否则返回错误对象

let name = "alex"
let status = app.contact.getByName(name);
if(status.error == undefined){
    console.log(status.name, status.phone_number, status.email);
}else{
    console.log(status.error, status.msg);
}

app.contact.getCount()
返回用户手机中保存的联系人总数。

let count = app.contact.getCount();
console.log(count);

DeepLink

app.deeplink 是 DeepLink API 的实例,它提供了启用 DeepLink 到应用程序内容的功能。

注意:要在应用程序中启用 DeepLink,您必须进行以下所有配置。
首先更新Package.JSON
为了在应用程序中启用深度链接,您必须在应用程序的 package.json 文件中定义具有以下属性的对象数组

  • 您需要在 package.json 中定义 deep-link 属性,它是scheme 和host对象的数组。
  • 您可以定义任意多的scheme和host

scheme: 您希望在哪个协议上启用应用程序的深度链接
host: 是您要深度链接应用程序的特定host

{
  "deep-link":[
        {
            "scheme" : "http",
            "host" : "android-js.github.io"
        },
        {
            "scheme" : "https",
            "host" : "android-js.github.io"
        }
  ]
}

每当用户点击定义的链接或主机时,您的应用程序将被列为建议在您的应用程序中打开该链接

访问应用程序中的链接

方法

app.deeplink.getLink()
返回用户点击后在应用程序中打开的链接

注:如果有链接,则返回链接,否则返回 -1

// In views of your app
let link = app.deeplink.getLink();
if(link != '-1') {
app.loadURL(link);
}

短信

app.sms 是 SMS API 的实例,它提供了从应用程序发送短信的功能。要使用此 API,您需要在 package.json 文件中设置此权限

android.permission.SEND_SMS
app.sms.send("123457890", "Hello this is from Android JS");

方法

app.sms.send(number, message)

  • number String
  • message String
app.sms.send("123457890", "Hello this is from Android JS");

地址位置

app.location 是位置 API 的实例,它提供了获取用户当前位置的经度和纬度的功能。要使用此 API,您需要在 package.json 文件中设置以下权限。

android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION
app.location.get();

方法

app.location.get()
返回包含属性纬度、经度和错误的 JSON 对象
注意:如果 error = true,则返回错误信息

mobileData

app.mobiledata 是移动数据 API 的一个实例,它提供了从应用程序访问设备数据的功能。

const status = app.mobiledata.isEnabled();
console.log("Mobile Data status: ", status);

方法

app.mobiledata.isEnabled()
如果已启用Mobile Data,则返回 true,否则返回 false。

APP对象

应用程序是app模块的一个实例,该模块提供与应用程序交互的各种功能。

方法

app.getPath(name)

  • name String

应用程序是app模块的一个实例,该模块提供与app交互的各种功能。
您可以通过名称请求以下路径:

root root directory (i.e. /system)
cache cache directory (i.e. /cache)
data system's data directory (i.e. /data)
storage internal storage (i.e. /storage/emulated/0)
alarms storage Alarms directory (i.e. /storage/emulated/0/Alarms)
dcim storage DCIM directory (i.e. /storage/emulated/0/DCIM)
downloads storage Download directory (i.e. /storage/emulated/0/Download)
movies storage Movies directory (i.e. /storage/emulated/0/Movies)
music storage Music directory (i.e. /storage/emulated/0/Music)
notifications storage Notifications directory (i.e. /storage/emulated/0/Notifications)
pictures storage Pictures directory (i.e. /storage/emulated/0/Pictures)
podcasts storage Podcasts directory (i.e. /storage/emulated/0/Podcasts)
ringtones storage Rongtones directory (i.e. /storage/emulated/0/Ringtones)
appData application data directory (i.e. /data/data/package/files)
userData application user directory (i.e. /storage/sdcard0/Android/data/package/files)

例:

let path = app.getPath('userData');
console.log(path);

app.loadURL(url)

  • url URL
    在 android webview 中加载 url,url 必须包含协议前缀,如 http:// 或 file://。
app.loadURL('https://google.com');

app.reload()
重新加载 Android webview。

app.reload();

API调用

Call API

app.call 是调用 API 的实例,它提供了本地调用(native calls)的功能。要使用此 API,您需要在 package.json 文件中设置此权限。

android.permission.CALL_PHONE
app.call.makeCall("123457890");