是否有一个应用程序可以通过LAN公开所有Android手机的原生API?
您可以下载至少一个好的应用程序,它允许通过一个安静的API发送和接收短信。但是,它是由其他开发人员制作的,因此我无法100%确定安全性。此外,我想访问一切,而不仅仅是短信。
我尝试在线搜索,但没有任何内容或搜索词组合类似于强制密码。
我希望能够通过我选择的语言将桌面集成系统变得有趣。
我认为解决方案是在我的手机上运行的服务,可以完全访问所有手机功能,需要安全的API密钥。它将放在我的桌面上,插入充电器,所以我不关心电源效率(轮询),但是双绑定模型会很吸引人(注册一个回调端点,在收到短信等电话事件时调用,或者电话铃声等。)。
有什么想法吗?我需要自己制作吗?
答案 0 :(得分:0)
在系统应用正在进行网络工作(主要是媒体同步,消息同步)时,您可能需要采取的实际示例来捕获REST /网络调用层...
假设您要拦截照片库应用程序在同步其媒体时所做的REST调用...
包装与您的Rest api相关的HttpClient的网络调用被封装在一个非常深入且非常专有的堆栈中,您可以对here
进行鉴赏查看'loadMediaSets()','loadMediaSet()',并注意没有涉及HttpClient或rest的接口。网络涉及'dataInputStreams',它由一个你不能期望观察或过载的不同(非Rest)接口包裹。
在系统应用程序中通过网络传播媒体并不值得尝试简单了解REST Api。
如果您花费大量时间使用Android API,您可以提供一个客户端事件列表,例如'OnNewTextMessage'或状态栏中的某些内容。同样,对于您希望拦截的每种媒体类型,这将是很多低级别的工作。
答案 1 :(得分:0)
好的,不是单一的应用解决方案,而是您可以做的事情:
未找到 - 未找到针对指定用途的开放API应用。
接收加速度计数据 - UDP
class Inertia : IDisposable
{
UdpClient listener = new UdpClient(5555);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, 5555);
Control context = null;
public Inertia(Control context)
{
this.context = context;
IAsyncResult result = listener.BeginReceive(new AsyncCallback(udpCallback), null);
}
private void udpCallback(IAsyncResult result)
{
byte[] data = listener.EndReceive(result, ref groupEP);
if (data.Length > 0)
{
string line = ASCIIEncoding.ASCII.GetString(data);
if (context.InvokeRequired)
context.BeginInvoke(UDPStringReceived, line);
else
if (UDPStringReceived != null) UDPStringReceived(line);
}
result = listener.BeginReceive(new AsyncCallback(udpCallback), null);
}
public delegate void UDPStringReceivedHandler(string line);
public event UDPStringReceivedHandler UDPStringReceived;
public void Dispose()
{
//TODO: Stop listening
}
}
使用Inertia类与WinForms一起使用:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Load += Form1_Load;
}
Inertia inertia = null;
void Form1_Load(object sender, EventArgs e)
{
inertia = new Inertia(this);
inertia.UDPStringReceived += inertia_UDPStringReceived;
}
void inertia_UDPStringReceived(string line)
{
try
{
string[] components = line.Split(',');
//My text boxes, showing the data
t.Text = components[0];
//index 1 contains the value 2, which probably indicates "Accelerometer" in next 3 values
aX.Text = components[2];
aY.Text = components[3];
aZ.Text = components[4];
//index 5 contains the value 3, which probably indicates "Gyroscope" in next 3 values
gX.Text = components[6];
gY.Text = components[7];
gZ.Text = components[8];
}
catch (Exception ex)
{
}
}
}