Andlua+实现WakeUpOnline远程开机

打印 上一主题 下一主题

主题 879|帖子 879|积分 2637

一、最终效果

远程开机app下载:
下载链接:https://wwp.lanzoup.com/iDR330ml4l2b
提取码 : dxcg
注意:使用前请按照2.1的步骤设置电脑“
mac地址:填写自己的mac地址
主机地址:填写自己的公网ip,百度搜索ip
映射端口:第二点准备工作里面配置的映射端口

二、准备工作

2.1. 开启bios的wol远程唤醒功能


  • 常见组装机主板
主板品牌启动按键Intel主板F12昂达主板F11顶星主板F11或F12富士康主板ESC或F12冠盟主板F11或F12冠铭主板F9华擎主板F11华硕主板F8技嘉主板F12杰微主板ESC或F8捷波主板ESC精英主板ESC或F11梅捷主板E5C或F12铭瑄主板ESC譬正主板ESC七彩虹主板ESC或F11双敏主板ESC斯巴达卡主板ESC微星主板F11翔升主板F10盈通主板F8映奏主板F9致铭主板F12智英主板ESC常见笔记本品牌
笔记本品牌启动按键eMachines笔记本F12Gateway笔记本F12IBM笔记本F12东芝笔记本F12方正笔记本F12海尔笔记本F12宏基笔记本F12华硕笔记本ESC患晋笔记本F9技嘉笔记本F12截尔笔记本F12联想ThinkpadF12联想笔记本F12明基笔记本F9苹果笔记本长按"option"键清华同方笔记本F12三星笔记本F12神舟笔记本F12室士通笔记本F12素尼笔记本ESC微星笔记本F11

  • 台式机品牌
台式机品牌启动按键方正台式机F12海尔台式机F12宏基台式机F12华硕台式机F8惠昔台式机F12截尔台式机ESC联想台式机F12明基台式机F8清华同方台式机F12神舟台式机F12注意:其他品牌请百度或尝试以上按键
进入BIOS后找一下有没有Wake On LAN 、远程唤醒、WOL等相关字样的选项,找到并启用。
如果还不知如何设置,百度搜索”主板型号+远程唤醒“

  • 设置路由器
TP Link路由器设置如下,其余路由器设置类似,请自行百度。

  • 设置IP与MAC绑定


  • 设置端口映射
注意内网IP与电脑的IP一致,就是刚才MAC绑定时的IP地址,端口任意选择,协议类型选择ALL或者UDP。


  • 设置电脑
点击”此电脑->设备管理器->网络适配器",启用唤醒魔包。

2.2. 下载Andlua+软件

软件下载链接,关注【产品经理不是经理】gzh,回复【andlua+】即可下载。
三、实现代码

3.1. 打开软件,新建项目,创建步骤如下:


  • 点击“+”号


  • 选择模板,这里我们选择空白模板。


  • 填写项目名称和包名。项目名称随便填,包名类似com.xx.xx,随意填写就行。


  • 生成的模板代码如下:

3.2.  编写代码


  • main.lua代码如下:
  1. require "import"
  2. import "android.app.*"
  3. import "android.os.*"
  4. import "android.widget.*"
  5. import "android.view.*"
  6. import "layout"
  7. import "socket"
  8. activity.setTheme(R.Theme_Blue)
  9. activity.setTitle("远程开机")
  10. activity.setContentView(loadlayout(layout))
  11. -- 将两个一组字符串表示的十六进制转为十六进制的字符串
  12. -- 'ff'(66 66) -> 0xff -> '.'(255)
  13. function to(str)
  14.   ret = ''
  15.   for i = 1, string.len(str), 2 do
  16.     byte = ('0x' .. string.sub(str, 0 + i, 1 + i))
  17.     a = tonumber(byte)
  18.     ret = ret .. string.char(a)
  19.   end
  20.   return ret
  21. end
  22. function wakeUp(mac,bip,port)
  23.   -- 要进行目标主机的MAC地址
  24.   -- 路由器广播地址
  25.   -- 映射端口
  26.   mac=string.gsub(mac,":","")
  27.   head = 'FFFFFFFFFFFF' -- 数据头
  28.   head = to(head)
  29.   mac = to(mac)
  30.   for i = 1, 16 do
  31.     head = head .. mac
  32.   end
  33.   u = socket.udp()
  34.   u:sendto(head,bip,port)
  35.   u:close()
  36.   toast("魔术包发送成功")
  37. end
  38. -- 判断是否为空
  39. function isEmpty(s)
  40.   local flag=false
  41.   if s==nil or s=="" then
  42.     flag=true
  43.   end
  44.   return flag
  45. end
  46. -- 自定义toast
  47. function toast(msg,activity,duration)
  48.   local activity=activity or this
  49.   local msg=msg or ""
  50.   local duration=duration or Toast.LENGTH_SHORT
  51.   Toast.makeText(activity, msg,duration).show()
  52. end
  53. btn.onClick=function()
  54.   mac=tostring(macAddr.getText())
  55.   host1=tostring(host.getText())
  56.   port1=tostring(port.getText())
  57.   if isEmpty(mac) or isEmpty(host1) or isEmpty(port1) then
  58.     toast("mac地址、主机地址、端口均不能为空")
  59.     return
  60.   end
  61.   wakeUp(mac,host1,port1)
  62. end
复制代码

  • layout.aly代码如下:
  1. {
  2.   LinearLayout;
  3.   orientation="vertical";
  4.   layout_height="wrap_content";
  5.   layout_width="match_parent";
  6.   backgroundColor="0xffc4d7d6";
  7.   {
  8.     LinearLayout;
  9.     layout_marginTop="20dp";
  10.     layout_width="match_parent";
  11.     {
  12.       TextView;
  13.       textSize="16sp";
  14.       layout_marginLeft="10dp";
  15.       layout_width="wrap_content";
  16.       layout_height="wrap_content";
  17.       textColor="0xff000000";
  18.       text="mac地址:";
  19.     };
  20.     {
  21.       EditText;
  22.       text="04:7C:16:01:21:85";
  23.       layout_width="match_parent";
  24.       id="macAddr";
  25.       layout_marginRight="10dp";
  26.     };
  27.   };
  28.   {
  29.     LinearLayout;
  30.     layout_width="match_parent";
  31.     layout_height="wrap_content";
  32.     {
  33.       TextView;
  34.       textSize="16sp";
  35.       textColor="0xff000000";
  36.       layout_marginLeft="10dp";
  37.       text="主机地址:";
  38.     };
  39.     {
  40.       EditText;
  41.       text="123.145.8.199";
  42.       layout_width="match_parent";
  43.       id="host";
  44.       layout_marginRight="10dp";
  45.     };
  46.   };
  47.   {
  48.     LinearLayout;
  49.     layout_width="match_parent";
  50.     {
  51.       TextView;
  52.       textSize="16sp";
  53.       textColor="0xff000000";
  54.       layout_marginLeft="10dp";
  55.       text="映射端口:";
  56.     };
  57.     {
  58.       EditText;
  59.       layout_marginRight="10dp";
  60.       layout_width="match_parent";
  61.       id="port";
  62.       text="9";
  63.     };
  64.   };
  65.   {
  66.     Button;
  67.     layout_marginLeft="15dp";
  68.     id="btn";
  69.     text="一键开机";
  70.     layout_marginTop="20dp";
  71.     backgroundColor="0xff10aec2";
  72.     textColor="0xffffffff";
  73.     layout_height="wrap_content";
  74.     layout_width="match_parent";
  75.     layout_marginRight="15dp";
  76.   };
  77. };
复制代码

  • init.lua使用模板代码,不做更改。
  • 修改完成后,点击三角符号预览

3.2.  打包app


  • 点击属性,设置项目属性。
取消选中调试模式,app需要的权限我们只选择拥有完全的网络访问权限即可,设置完成后点击右上角的勾保存。


  • 点击打包,打包完成后会提示安装,点击安装即可。

三、总结

andlua+软件提供了丰富的功能,让我们在手机上可以编程快速生成我们自己的应用,更多复杂的应用需要大家自行探索。
本文由【产品经理不是经理】gzh同步发布,欢迎关注

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表