如何为 Android 制作局域网唤醒?

2024-02-05

你能告诉我,如何为Android制作Wake On Lan应用程序吗?我在谷歌上搜索了两周,尝试了一切,从另一个唤醒局域网应用程序下载了源代码,并尝试找到用于制作和发送魔术包的代码。看起来其他所有代码都可以工作,但是当我在我的应用程序中使用它时,它不起作用!我还尝试编辑java代码以使其适用于Android(如下:http://www.jibble.org/wake-on-lan/WakeOnLan.java http://www.jibble.org/wake-on-lan/WakeOnLan.java)。你能帮我吗? 抱歉我的英语不好。 这是我的代码:

package com.macura.wakemypc;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

import com.macura.wakemypc.MainActivity;

import com.macura.wakemypc.R;
import com.macura.wakemypc.MainActivity;

import com.macura.wakemypc.MainActivity;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends Activity {
public static final int PORT = 9; 





@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
 }
 public void buttonClick(View view) {
EditText iptext = (EditText)findViewById(R.id.ipbox);
EditText mactext = (EditText)findViewById(R.id.macbox);
String broadcastIP = String.valueOf(iptext.getText());
String mac = String.valueOf(mactext.getText());
Log.d("Read mac= ", mac);
Log.d("Read ip=", broadcastIP);
MainActivity.wakeup(broadcastIP, mac);
  }
 private static byte[] getMacBytes(String mac) throws IllegalArgumentException {
     Log.d("GetMacBytes", "method started");
// TODO Auto-generated method stub
byte[] bytes = new byte[6];
try {
    String hex;
    for (int i = 0; i < 6; i++) {
        hex = mac.substring(i*2, i*2+2);
        bytes[i] = (byte) Integer.parseInt(hex, 16);
        Log.d("GetMacbytes", "calculated");
        Log.d("GetMacBytes (bytes)", new String(bytes));
    }
}
catch (NumberFormatException e) {
    Log.e("GetMacBytes","error");
}
return bytes;
 }

 public static void wakeup(String broadcastIP, String mac) {
     Log.d("wakeup", "method started");
if (mac == null) {
    Log.d("Mac error at wakeup", "mac = null");
    return;
}

    try {
        byte[] macBytes = getMacBytes(mac);
        Log.d("wakeup (bytes)", new String(macBytes));
        byte[] bytes = new byte[6 + 16 * macBytes.length];
        for (int i = 0; i < 6; i++) {
            bytes[i] = (byte) 0xff;
        }
        for (int i = 6; i < bytes.length; i += macBytes.length) {
            System.arraycopy(macBytes, 0, bytes, i, macBytes.length);
        }

        Log.d("wakeup", "calculating completed, sending...");
        InetAddress address = InetAddress.getByName(broadcastIP);
        DatagramPacket packet = new DatagramPacket(bytes, bytes.length, address, 9);
        DatagramSocket socket = new DatagramSocket();
        socket.send(packet);
        socket.close();
        Log.d("wakeup", "Magic Packet sent");



         }
         catch (Exception e) {
             Log.e("wakeup", "error");
     }

 }

 }

这是 Logcat 输出(我用 X 代替 mac):

07-07 14:58:36.282: D/Read mac=(7247): XX:XX:XX:XX:XX:XX
07-07 14:58:36.282: D/Read ip=(7247): 192.168.1.255
07-07 14:58:36.282: D/wakeup(7247): method started
07-07 14:58:36.282: D/GetMacBytes(7247): method started
07-07 14:58:36.282: D/GetMacbytes(7247): calculated
07-07 14:58:36.282: D/GetMacBytes (bytes)(7247): ������������
07-07 14:58:36.282: E/GetMacBytes(7247): error
07-07 14:58:36.282: W/System.err(7247): java.lang.NumberFormatException: Invalid int:       ":1"
07-07 14:58:36.282: W/System.err(7247):     at         java.lang.Integer.invalidInt(Integer.java:138)
07-07 14:58:36.282: W/System.err(7247):     at     java.lang.Integer.parse(Integer.java:375)
07-07 14:58:36.282: W/System.err(7247):     at     java.lang.Integer.parseInt(Integer.java:366)
07-07 14:58:36.282: W/System.err(7247):     at   com.macura.wakemypc.MainActivity.getMacBytes(MainActivity.java:57)
07-07 14:58:36.282: W/System.err(7247):     at   com.macura.wakemypc.MainActivity.wakeup(MainActivity.java:77)
07-07 14:58:36.282: W/System.err(7247):     at    com.macura.wakemypc.MainActivity.buttonClick(MainActivity.java:47)
07-07 14:58:36.282: W/System.err(7247):     at    java.lang.reflect.Method.invokeNative(Native Method)
07-07 14:58:36.282: W/System.err(7247):     at  java.lang.reflect.Method.invoke(Method.java:511)
07-07 14:58:36.282: W/System.err(7247):     at    android.view.View$1.onClick(View.java:3586)
07-07 14:58:36.292: W/System.err(7247):     at   android.view.View.performClick(View.java:4084)
07-07 14:58:36.292: W/System.err(7247):     at   android.view.View$PerformClick.run(View.java:16966)
07-07 14:58:36.292: W/System.err(7247):     at   android.os.Handler.handleCallback(Handler.java:615)
07-07 14:58:36.292: W/System.err(7247):     at   android.os.Handler.dispatchMessage(Handler.java:92)
07-07 14:58:36.292: W/System.err(7247):     at android.os.Looper.loop(Looper.java:137)
07-07 14:58:36.292: W/System.err(7247):     at     android.app.ActivityThread.main(ActivityThread.java:4931)
07-07 14:58:36.292: W/System.err(7247):     at  java.lang.reflect.Method.invokeNative(Native Method)
07-07 14:58:36.292: W/System.err(7247):     at   java.lang.reflect.Method.invoke(Method.java:511)
07-07 14:58:36.292: W/System.err(7247):     at   com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
07-07 14:58:36.292: W/System.err(7247):     at     com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
07-07 14:58:36.292: W/System.err(7247):     at dalvik.system.NativeStart.main(Native     Method)
07-07 14:58:36.292: D/wakeup (bytes)(7247): ������������
07-07 14:58:36.292: D/wakeup(7247): calculating completed, sending...
07-07 14:58:36.292: E/wakeup(7247): error
07-07 14:58:36.292: W/System.err(7247): android.os.NetworkOnMainThreadException
07-07 14:58:36.292: W/System.err(7247):     at    android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
07-07 14:58:36.302: W/System.err(7247):     at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:175)
07-07 14:58:36.302: W/System.err(7247):     at libcore.io.IoBridge.sendto(IoBridge.java:473)
07-07 14:58:36.302: W/System.err(7247):     at java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:182)
07-07 14:58:36.302: W/System.err(7247):     at java.net.DatagramSocket.send(DatagramSocket.java:284)
07-07 14:58:36.302: W/System.err(7247):     at com.macura.wakemypc.MainActivity.wakeup(MainActivity.java:91)
07-07 14:58:36.302: W/System.err(7247):     at    com.macura.wakemypc.MainActivity.buttonClick(MainActivity.java:47)
07-07 14:58:36.302: W/System.err(7247):     at java.lang.reflect.Method.invokeNative(Native Method)
07-07 14:58:36.302: W/System.err(7247):     at java.lang.reflect.Method.invoke(Method.java:511)
07-07 14:58:36.302: W/System.err(7247):     at android.view.View$1.onClick(View.java:3586)
07-07 14:58:36.302: W/System.err(7247):     at android.view.View.performClick(View.java:4084)
07-07 14:58:36.302: W/System.err(7247):     at android.view.View$PerformClick.run(View.java:16966)
07-07 14:58:36.302: W/System.err(7247):     at android.os.Handler.handleCallback(Handler.java:615)
07-07 14:58:36.302: W/System.err(7247):     at android.os.Handler.dispatchMessage(Handler.java:92)
07-07 14:58:36.302: W/System.err(7247):     at android.os.Looper.loop(Looper.java:137)
07-07 14:58:36.312: W/System.err(7247):     at   android.app.ActivityThread.main(ActivityThread.java:4931)
07-07 14:58:36.312: W/System.err(7247):     at  java.lang.reflect.Method.invokeNative(Native Method)
07-07 14:58:36.312: W/System.err(7247):     at  java.lang.reflect.Method.invoke(Method.java:511)
07-07 14:58:36.312: W/System.err(7247):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
07-07 14:58:36.312: W/System.err(7247):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
07-07 14:58:36.312: W/System.err(7247):     at dalvik.system.NativeStart.main(Native   Method)

看来您使用了错误的方法从您的系统中获取文本edittext (toString),你必须使用gettext.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为 Android 制作局域网唤醒? 的相关文章

随机推荐

  • 无法连接到 MongoLab“身份验证失败”错误

    我是蒙戈新手 最近在 mongoLab 创建了一个帐户 我正在尝试使用以下语句连接到数据库 mongo ds039487 mongolab com 39487 webbies u
  • C# 解析无名称的Json文件

    所以 Json 文件的一部分是这样的 number 23 name LJames lt look at this line Gender Male 我正在尝试解析它 只要名称字段存在 名称与值不匹配 DataContractJsonSeri
  • 在 R Ubuntu 中安装主题模型时出错

    我在安装时遇到错误topicmodels封装在R 跑步时install packages topicmodels dependencies TRUE 以下是我收到的最后几行 请帮忙 我的R版本是3 1 3 g I usr share R i
  • 使用雷达/极坐标图来描述各个数据点

    这是继我之前的帖子之后 如何在ggplot2中测量多边形的面积 https stackoverflow com questions 47644156 how to measure the area of a polygon in ggplo
  • 如何验证GPU的使用情况?

    如何验证 CNTK 是否正在使用 GPU 我已在我的计算机上安装了 CNTK 2 0 beta7 0 Windows 64bit GPU 1bit SGD 二进制文件 但是 当我尝试从 Python 运行它时 from cntk devic
  • C++ - 自动返回引用和非引用类型

    当编写函数时auto我们可以使用的返回类型constexpr if返回不同类型 auto myfunc constexpr if someBool type1 first something return first else type2
  • 匹配后替换行

    给定这个文件 cat foo txt AAA 111 BBB 222 CCC 333 我想替换之后的第一行BBB with 999 我想出了这个命令 awk BBB f 1 print next f 1 999 f 0 1 foo txt
  • Stacktrace Java Eclipse 中的未知来源

    我有一个非常烦人的问题 当在 Eclipse 中从源代码中导出 jar 文件时 我不会在堆栈跟踪中获得有关发生错误的源代码和行号的信息 我已经检查了 ecplise 中项目的编译器设置 并且设置了类文件生成部分中的所有选项 我正在为 Min
  • 如何使用 VB 6.0 生成格式良好的 XML 文件?

    我正在开发 Visual Basic 6 0 项目 需要生成一个格式良好的 XML 文件 其如下所示
  • RESTEasy - 使用重复的缓存控制进行响应 - Wildfly10

    我有一个带有图像的 GET 响应 GET Path id thumbnail public Response readThumbnailById PathParam id String id QueryParam serviceContex
  • 如何删除没有标签的Docker镜像?

    我使用 docker 已有 5 个月了 从来没有遇到过这个问题 我有 2 个具有相同 ID 的图像 因此我想删除我知道它已被弃用的图像 问题是它没有 ID 当我尝试这样做时 dk rmi f gitlab lab 5005 xs mgmt
  • Scala:如何使用默认值初始化对象

    我认为用一个例子可以更好地解释这一点 我有以下案例类 case class Person name String no name surname String no surname 我想创建一个通用函数来填充它 例如 一条 json 消息
  • 具有配置的类库中的 Entity Framework 7 迁移脚手架

    尝试将迁移添加到 ASP NET 5 类库中的 EF7 模型 跑步时dnx ef migration add mymigration失败并产生不同的结果 具体取决于我运行它的项目 如果我在主项目的文件夹中运行它 它无法找到DbContext
  • 返回多个值并访问它们?

    我将如何构造它以返回多个值 消息和名称 并能够在js html file code gs function createArtistTable name var message test return message and name js
  • 如何使用 Fetch API 发布身体数据?

    下面是在邮递员中导入并运行后成功返回响应的curl命令 curl request POST data grant type password data username test data password xyz1234 data sco
  • SQL命令添加数据库图表

    sql server 2008 上是否有一个 sql 命令可以运行以启用数据库图表而不是出现此对话框 该数据库没有使用数据库图表所需的一个或多个支持对象 你想创造它们吗 该脚本有点太长 无法在此处添加 但您可以执行以下操作 1 创建一个新的
  • 如何从 bode() 到达第一个和第二个图

    我知道如何使用 bode 函数创建波特图 如果我想重叠两个或多个系统频率响应 我使用 bode sys1 sys2 or hold on 例如 当我想要到达该图以便用 text 放置图例时 很容易到达第二个图 像图形指针这样的东西总是返回到
  • 错误:“不推荐使用 Window 类型中的 show() 方法”

    这是一个简单的程序 只需打开 AWT 我正在使用 eclipse 并且我收到上面显示的frame show 的错误 Eclipse 正在用一条线跨越 显示 我想要这个程序做的只是显示一个 300px x 300px 的框架窗口 完整代码如下
  • Apache 无法在 OSX 中的 MAMP 中启动(但 MySQL 可以工作)

    我已经使用 MAMP 工作了几个月 最近安装了 PostgreSQL 它还建议安装 Apache 我这样做是为了确保 PostgreSQL 正常工作 然后我卸载了 PostgreSQL 和 apache 构建并尝试重新启动 MAMP 它启动
  • 如何为 Android 制作局域网唤醒?

    你能告诉我 如何为Android制作Wake On Lan应用程序吗 我在谷歌上搜索了两周 尝试了一切 从另一个唤醒局域网应用程序下载了源代码 并尝试找到用于制作和发送魔术包的代码 看起来其他所有代码都可以工作 但是当我在我的应用程序中使用