CloudBox范例代码:CloudLED
来源:互联网 发布:抽烟咳嗽 知乎 编辑:程序博客网 时间:2024/05/16 07:28
这个代码是一个跨平台的手电筒程序
CloudLED是透过跨平抬筐架CloudBox开发的
如何在iPhone控制LED
如何在Android控制LED
这个范例示范了如何将实践抽离,面对抽象的方式
到我的资源可下载源码
/* * CBLed.h * CloudBox Cross-Platform Framework Project * * Created by Cloud on 2012/1/14. * Copyright 2012 Cloud Hsu. All rights reserved. * */class CBLedBase;class CBLed{private:bool m_isOn;CBLedBase* m_led;public:CBLed();~CBLed();bool getOn() { return m_isOn;}void switchLed();void turnOnLed();void turnOffLed();};
/* * CBLed.cpp * CloudBox Cross-Platform Framework Project * * Created by Cloud on 2012/1/14. * Copyright 2012 Cloud Hsu. All rights reserved. * */#include "CBLed.h"#ifdef __CBIOS__#include "CBLediOS.h"#else#include "../Android/CBLedAndroid.h"#endifCBLed::CBLed(){m_isOn = false;#ifdef __CBIOS__m_led = new CBLediOS();#elsem_led = new CBLedAndroid();#endif}CBLed::~CBLed(){delete m_led;}void CBLed::switchLed(){if(m_isOn){turnOffLed();}else{turnOnLed();}}void CBLed::turnOnLed(){if(!m_isOn){m_led->turnOnLed();m_isOn = true;}}void CBLed::turnOffLed(){if(m_isOn){m_led->turnOffLed();m_isOn = false;}}
/* * CBLediOS.h * CloudBox Cross-Platform Framework Project * * Created by Cloud on 2012/1/14. * Copyright 2012 Cloud Hsu. All rights reserved. * */#include "CBLedBase.h"class CBLediOS : public CBLedBase{public:CBLediOS();~CBLediOS();void turnOnLed();void turnOffLed();};
/* * CBLediOS.mm * CloudBox Cross-Platform Framework Project * * Created by Cloud on 2012/1/14. * Copyright 2012 Cloud Hsu. All rights reserved. * */#include "CBLediOS.h"#import <AVFoundation/AVFoundation.h>CBLediOS::CBLediOS(){}CBLediOS::~CBLediOS(){}void CBLediOS::turnOnLed(){#ifdef TARGET_IPHONE_SIMULATOR#endif#ifdef TARGET_OS_IPHONEAVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; if ([device hasTorch]) { [device lockForConfiguration:nil]; [device setTorchMode: AVCaptureTorchModeOn]; [device unlockForConfiguration]; }#endif}void CBLediOS::turnOffLed(){#ifdef TARGET_OS_IPHONEAVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; if ([device hasTorch]) { [device lockForConfiguration:nil]; [device setTorchMode: AVCaptureTorchModeOff]; [device unlockForConfiguration]; }#endif}
/* * CloudLed.java * CloudBox Cross-Platform Framework Project * * Created by Cloud Hsu on 2012/1/17. * Copyright 2012 Cloud Hsu. All rights reserved. * */package com.clouddevelop.cloudbox;import android.hardware.Camera;import android.util.Log;public class CloudLed {Camera m_Camera;public CloudLed(){}public void turnOn(){try{Log.i("cloudbox-app", "CloudLed.turnOn()");m_Camera = Camera.open();Camera.Parameters mParameters;mParameters = m_Camera.getParameters();mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);m_Camera.setParameters(mParameters);}catch(Exception ex){ex.printStackTrace();}}public void turnOff(){try{Log.i("cloudbox-app", "CloudLed.turnOff()");Camera.Parameters mParameters;mParameters = m_Camera.getParameters();mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);m_Camera.setParameters(mParameters);m_Camera.release();}catch(Exception ex){ex.printStackTrace();}}}
/* * CBLedAndroid.h * CloudBox Cross-Platform Framework Project * * Created by Cloud Hsu on 2012/1/17. * Copyright 2012 Cloud Hsu. All rights reserved. * */#include <jni.h>#include "../Extends/CBLedBase.h"#include "CBJNI.h"class CBLedAndroid : public CBLedBase, public CBJNI{private:jmethodID m_turnOn;jmethodID m_turnOff;public:CBLedAndroid();~CBLedAndroid();void turnOnLed();void turnOffLed();};
/* * CBLedAndroid.cpp * CloudBox Cross-Platform Framework Project * * Created by Cloud Hsu on 2012/1/17. * Copyright 2012 Cloud Hsu. All rights reserved. * */#include "CBLedAndroid.h"#include "def.h"#include "../CBLibrary.h"CBLedAndroid::CBLedAndroid(){initial("com/clouddevelop/cloudbox/CloudLed");m_turnOn = g_env->GetMethodID(m_mainClass, "turnOn", "()V");m_turnOff = g_env->GetMethodID(m_mainClass, "turnOff", "()V");}CBLedAndroid::~CBLedAndroid(){}void CBLedAndroid::turnOnLed(){g_env->CallVoidMethod(m_mainObject, m_turnOn);}void CBLedAndroid::turnOffLed(){g_env->CallVoidMethod(m_mainObject, m_turnOff);}
- CloudBox范例代码:CloudLED
- [CloudBox] 基于跨平台框架的愤怒鸟滑动按钮范例
- 代码范例
- CloudBox说明
- CloudBox CBDialog
- 代码范例 - ArrayUtils
- JAVA代码注释范例
- JAVA代码注释范例
- NSDate常用代码范例
- NSDate常用代码范例
- [Android]照相机范例代码
- NSDate常用代码范例
- NSDate常用代码范例
- java同步代码范例
- NSDate常用代码范例
- NSDate常用代码范例
- NSDate常用代码范例
- 百度地图范例代码
- Xen的源码包编译安装
- ExtJS4学习笔记十--Grid使用
- java的引用传递
- android全屏显示
- 关于图片放在drawable和drawable-hdpi的一点小区别
- CloudBox范例代码:CloudLED
- 传统卖场或沦为“电商”义工?
- 【二维单调队列】FZU- Problem 2080 最大差值
- android 下之hello world c 手动编译
- Data Sets
- 【容斥原理】HDU-1796-How many integers can you find
- 【最小点覆盖(树形dp)】PKU-3659-Cell Phone Network
- 如何运用Adobe AIR与本地程序通讯?
- Project Server 2010全局权限和类别权限定义