Firefly开源社区

12
发表新贴

写了个简单的小应用FireflyLeds.apk

265

积分

5

威望

6

贡献

实习版主

Rank: 7Rank: 7Rank: 7

积分
265

活跃会员热心会员突出贡献

发表于 2015-3-27 14:57:36     
本帖最后由 carlinluo 于 2015-3-27 15:06 编辑

可以运行在Firefly开发板上,但是默认固件的未修改LED驱动需要加权限,不然打不开LED,如下(假如你已经安装adb 工具)
1.加权限
adb shell chmod 666 sys/class/leds/firefly:blue:power/brightness
adb shell chmod 666 sys/class/leds/firefly:yellow:user/brightness
2.安装apk,可以adb 安装(注意路径),可以手动安装
adb install d:\FireflyLeds.apk
3.就3个按钮,控制firefly板子上的黄灯和蓝灯,还有个自动控制的按钮,打开之后板子上的黄色和蓝色灯轮流闪动。
FIRELED.png

4.主要代码,很简单了,俺只是个菜鸟,高手请忽略。。。

4-1 LedsActivity
  1. package com.example.luobo.fireflyleds;

  2. import android.content.Intent;
  3. import android.os.Handler;
  4. import android.os.Message;
  5. import android.support.v7.app.ActionBarActivity;
  6. import android.os.Bundle;
  7. import android.util.Log;
  8. import android.view.Menu;
  9. import android.view.MenuItem;
  10. import android.widget.CompoundButton;
  11. import android.widget.ToggleButton;


  12. public class LedsActivity extends ActionBarActivity {


  13. private final static String TAG="LedsActivity";
  14. public ToggleButton bluebt;
  15. public ToggleButton yellowbt;
  16. public ToggleButton autobt;
  17. public LedsCtrl ledsctrl;
  18. Intent intent=null;

  19. @Override
  20. protected void onCreate(Bundle savedInstanceState) {
  21. super.onCreate(savedInstanceState);
  22. ledsctrl=new LedsCtrl();
  23. setContentView(R.layout.activity_leds);



  24. bluebt=(ToggleButton)findViewById(R.id.toggleButton);
  25. bluebt.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
  26. @Override
  27. public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

  28. bluebt.setChecked(isChecked);
  29. ledsctrl.LedsOnOff(ledsctrl.BlueLed,isChecked);

  30. }
  31. });

  32. yellowbt=(ToggleButton)findViewById(R.id.toggleButton2);
  33. yellowbt.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
  34. @Override
  35. public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

  36. yellowbt.setChecked(isChecked);
  37. ledsctrl.LedsOnOff(ledsctrl.YllowLed,isChecked);


  38. }
  39. });

  40. autobt=(ToggleButton)findViewById(R.id.toggleButton3);
  41. autobt.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
  42. @Override
  43. public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

  44. autobt.setChecked(isChecked);
  45. if(isChecked)
  46. handler.post(runnable);
  47. else
  48. handler.removeCallbacks(runnable);


  49. }
  50. });
  51. //intent = new Intent("com.example.luobo.fireflyleds.LedsService");
  52. //startService(intent);


  53. }


  54. Handler handler = new Handler(){

  55. boolean isOn;
  56. @Override
  57. public void handleMessage (Message msg){


  58. isOn=msg.getData().getBoolean("onoff");
  59. //Log.d(TAG,"handleMessage----->"+isOn);

  60. yellowbt.setChecked(isOn);
  61. ledsctrl.LedsOnOff(ledsctrl.YllowLed,isOn);
  62. bluebt.setChecked(!isOn);
  63. ledsctrl.LedsOnOff(ledsctrl.BlueLed,!isOn);

  64. }
  65. };


  66. boolean onoff;
  67. Runnable runnable = new Runnable() {
  68. Bundle data;

  69. @Override
  70. public void run() {

  71. Message msg=handler.obtainMessage();
  72. data =new Bundle();

  73. //Log.d(TAG,"----->Runnable...");


  74. onoff=!onoff;
  75. data.putBoolean("onoff",onoff);
  76. msg.setData(data);
  77. handler.sendMessage(msg);
  78. handler.postDelayed(runnable, 300);
  79. }
  80. };

  81. @Override
  82. public boolean onCreateOptionsMenu(Menu menu) {
  83. // Inflate the menu; this adds items to the action bar if it is present.
  84. getMenuInflater().inflate(R.menu.menu_leds, menu);
  85. return true;
  86. }

  87. @Override
  88. public boolean onOptionsItemSelected(MenuItem item) {
  89. // Handle action bar item clicks here. The action bar will
  90. // automatically handle clicks on the Home/Up button, so long
  91. // as you specify a parent activity in AndroidManifest.xml.
  92. int id = item.getItemId();

  93. //noinspection SimplifiableIfStatement
  94. if (id == R.id.action_settings) {
  95. return true;
  96. }

  97. return super.onOptionsItemSelected(item);
  98. }
  99. @Override
  100. public void onDestroy(){
  101. super.onDestroy();

  102. if(intent != null){
  103. stopService(intent);
  104. }
  105. }
  106. }
复制代码
4-2 LedsCtrl
  1. package com.example.luobo.fireflyleds;

  2. import android.util.Log;
  3. import java.io.BufferedOutputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.OutputStream;


  8. /**
  9. * Created by luobo on 15-3-26.
  10. */
  11. public class LedsCtrl {

  12. public final static String TAG="LedsCtrl";
  13. public final static String BLEDPATH="sys/class/leds/firefly:blue:power/brightness";
  14. public final static String YLEDPATH="sys/class/leds/firefly:yellow:user/brightness";
  15. public final int BlueLed=0;
  16. public final int YllowLed=1;

  17. protected LedsCtrl(){
  18. Log.d(TAG,"----->");

  19. }
  20. public void LedsOnOff(int LedID ,boolean on){

  21. //Log.d(TAG,"----->LedsOnOff="+on);


  22. OutputStream out = null;
  23. String ledpath=null;

  24. try {
  25. if (LedID==BlueLed)
  26. ledpath=BLEDPATH;
  27. else
  28. ledpath=YLEDPATH;
  29. out = new BufferedOutputStream(new FileOutputStream(ledpath));
  30. byte[] led_off = "000".getBytes();
  31. byte[] led_on = "255".getBytes();
  32. if(on)
  33. out.write(led_on);
  34. else
  35. out.write(led_off);

  36. out.close();
  37. } catch (FileNotFoundException e) {
  38. e.printStackTrace();
  39. } catch (IOException e) {
  40. e.printStackTrace();
  41. }

  42. }
  43. }
复制代码








FireflyLeds.zip

754.68 KB, 下载次数: 128, 下载积分: 灯泡 -1 , 经验 -1

已有 1评分威望 +3 灯泡 +2 贡献 +3 收起 理由
pmos1981 + 3 + 2 + 3 很给力!

查看全部评分

回复

使用道具 举报

2918

积分

56

威望

46

贡献

高级创客

Rank: 6Rank: 6

积分
2918

优秀版主论坛元老

发表于 2015-3-27 16:55:56     
必须顶{:3_48:}
回复

使用道具 举报

185

积分

1

威望

0

贡献

技术小白

积分
185
QQ
发表于 2015-3-27 16:59:17     
学习学习!MARK!
回复

使用道具 举报

23

积分

0

威望

0

贡献

技术小白

积分
23
发表于 2015-4-7 19:40:53     
可以将源码提供下吗?
回复

使用道具 举报

265

积分

5

威望

6

贡献

实习版主

Rank: 7Rank: 7Rank: 7

积分
265

活跃会员热心会员突出贡献

发表于 2015-4-8 18:14:47     
schlin2999 发表于 2015-4-7 19:40
可以将源码提供下吗?

上面就是,你需要整改工程包吗
回复

使用道具 举报

23

积分

0

威望

0

贡献

技术小白

积分
23
发表于 2015-4-8 20:21:02     
carlinluo 发表于 2015-4-8 18:14
上面就是,你需要整改工程包吗

如果能提供整个源码包更好学习点,可以吗?
回复

使用道具 举报

265

积分

5

威望

6

贡献

实习版主

Rank: 7Rank: 7Rank: 7

积分
265

活跃会员热心会员突出贡献

发表于 2015-4-9 09:38:13     
回复

使用道具 举报

10

积分

0

威望

0

贡献

游客

积分
10
发表于 2016-4-26 13:52:20     
本帖最后由 pmos1981 于 2016-4-26 14:39 编辑

請問每次重開機就要 1.加权限
adb shell chmod 666 sys/class/leds/firefly:blue:power/brightness
adb shell chmod 666 sys/class/leds/firefly:yellow:user/brightness

有沒有直接寫死的方法?
不用再次加权限
謝謝
PS: 只要給 0 or 1 就好了
  • byte[] led_off = "0".getBytes();
  • byte[] led_on = "1".getBytes();

回复

使用道具 举报

5

积分

0

威望

0

贡献

游客

积分
5
发表于 2016-5-6 17:16:43     
一直有疑问,开发安卓应用,使用android studio的话,sdk是使用从google下载的么?还是要指定fireprime的sdk?请不吝敕教!非常感谢!
回复

使用道具 举报

1186

积分

1

威望

3

贡献

中级创客

Rank: 4

积分
1186
QQ
发表于 2016-5-7 21:56:25     
pmos1981 发表于 2016-4-26 13:52
請問每次重開機就要 1.加权限
adb shell chmod 666 sys/class/leds/firefly:blue:power/brightness
adb s ...

写死是在驱动里改,大概是叫driver下led-class.c里面
回复

使用道具 举报

返回列表
12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表