Cordova探险系列(三)
2015-10-26 13:35
330 查看
自从3.0之后。Cordova默认是关闭全部关于设备原生特性功能的,所以我们要通过加入插件来启动原生特性。
这里以Accelerometer(加速度感应器)为例,来学习怎样使用设备原生特性。
1.加入插件
首先,须要在project文件夹下。通过CLI命令加入插件。
通过ls命令。能够查看当前项目下。已经安装的插件。
2.在config.xml文件里配置该特性
路径:res/xml/config.xml
完整配置例如以下:
某些插件还须要在Android的AndroidManifest.xml中加入uses-permission
比如:
当然。这里不须要!
3.API
onSuccess和onError是相应的回调函数
4.完整样例
假设用Android的原生API,用Java代码来实现同样功能呢,例如以下:
Activity
Dialog
main.xml
这里以Accelerometer(加速度感应器)为例,来学习怎样使用设备原生特性。
1.加入插件
首先,须要在project文件夹下。通过CLI命令加入插件。
1 | cordova plugin add org.apache.cordova.device-motion |
1 | cordova plugin ls |
路径:res/xml/config.xml
12 | <feature name="Accelerometer"> <param name="android-package" value="org.apache.cordova.devicemotion.AccelListener" /> </feature> |
12 | <?xml version='1.0' encoding='utf-8'?> |
比如:
1 | <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> |
3.API
1 | navigator.accelerometer.getCurrentAcceleration(onSuccess, onError) |
4.完整样例
12 | <!DOCTYPE html> <html> <head> <title>Acceleration Example</title> <script type="text/javascript" charset="utf-8" src="cordova.js"></script> <script type="text/javascript" charset="utf-8"> document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { } function getCurrrentAcceleration() { navigator.accelerometer.getCurrentAcceleration(onSuccess, onError); } function onSuccess(acceleration) { alert('Acceleration X: ' + acceleration.x + '\n' + 'Acceleration Y: ' + acceleration.y + '\n' + 'Acceleration Z: ' + acceleration.z + '\n' + 'Timestamp: ' + acceleration.timestamp + '\n'); } function onError() { alert('onError!'); } </script> </head> <body> <button onClick="getCurrrentAcceleration()">click</button> </body> </html> |
Activity
12 | import android.app.Activity; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.view.View; import me.zeph.shakeshake.R; import me.zeph.shakeshake.fragment.FireMissilesDialogFragment; import static android.hardware.Sensor.TYPE_ACCELEROMETER; import static android.hardware.SensorManager.SENSOR_DELAY_NORMAL; public class MyActivity extends Activity { private SensorManager sensorManager; private Sensor sensor; private AccelerometerListener listener; private String text; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initSensor(); } private void initSensor() { sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); sensor = sensorManager.getDefaultSensor(TYPE_ACCELEROMETER); listener = new AccelerometerListener(); sensorManager.registerListener(listener, sensor, SENSOR_DELAY_NORMAL); } @Override protected void onStop() { super.onStop(); sensorManager.unregisterListener(listener); } public void sendMessage(View view) { FireMissilesDialogFragment fireMissilesDialogFragment = new FireMissilesDialogFragment(text); fireMissilesDialogFragment.show(getFragmentManager(), "some tag"); } class AccelerometerListener implements SensorEventListener { @Override public void onSensorChanged(SensorEvent event) { text = "Acceleration X: \n" + event.values[0] + "\n" + "Acceleration Y: \n" + event.values[1] + "\n" + "Acceleration Z: \n" + event.values[2] + "\n" + "Timestamp: \n" + event.timestamp + "\n"; } @Override public void onAccuracyChanged(Sensor sensor, int i) { } } } |
12 | import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.content.DialogInterface; import android.os.Bundle; import me.zeph.shakeshake.R; public class FireMissilesDialogFragment extends DialogFragment { private String text; public FireMissilesDialogFragment(String text) { this.text = text; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder .setTitle(R.string.dialog_accelerometer) .setMessage(text) .setNeutralButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { } }); return builder.create(); } } |
12 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/click" android:onClick="sendMessage" /> </LinearLayout> |
相关文章推荐
- Node.js脚本杀掉占用端口的进程
- 【CUDA并行程序设计系列(2)】CUDA简介及CUDA初步编程
- 【转载】4412开发板、PC、ubuntu通过网线连接
- 搭建PHP(LAMP),安装zend优化解析速度,并在其平台上搭建phpmyadmin管理系统,以页面方式管理mysql
- 用权重来实现屏幕自适应
- 1 分钟上手 Freemarker
- 论架构师的自我修养
- Android实现带动画的下拉刷新RecyclerView
- 为什么要CGI
- sell学习第二课-选择排序
- Set Programming Guide
- 拓扑排序+优先级队列
- struts2的流程跳转
- 多态
- 个性化推荐算法------基于内容的推荐和基于邻域的协同过滤
- OpenCV_基于混合高斯模型GMM的运动目标检测
- 敏感词判断
- java类集
- 如何安装Microsoft Visual C++6.0
- Teradata join