Android手机控制电脑撸出HelloWorld

简介: 最近在开发一个远程办公的软件。 昨天在手机调通,并且成功通过手机打开电脑上的Eclipse撸出来一个HelloWorld。也许不久的将来, 下班后,拿着手机在家写代码了。工作时间直接变成24/24 /7废话不多说,先来看下面的截图,图片都是手机截图直接通过手机打开一个Windows操作系统。 下面打开Eclipse,创建了java工程。相关原理本

最近在开发一个远程办公的软件。
昨天在手机调通,并且成功通过手机打开电脑上的Eclipse撸出来一个HelloWorld。

也许不久的将来, 下班后,拿着手机在家写代码了。工作时间直接变成24/24 /7

废话不多说,先来看下面的截图,图片都是手机截图

直接通过手机打开一个Windows操作系统。

下面打开Eclipse,创建了java工程。

相关原理

本篇我们简单介绍下。有些低层代码还没有来得及仔细研究,写的有点水。
1. 首先服务器开发一个虚拟桌面,类似阿里云的虚拟镜像一样,然后手机端进行交互。
2. 具体界面通过GLSerfaceView进行绘制。
3. 通过Spice协议传递交互数据

代码需要用到C语言函数库。这里armeabi和x86架构下都放置了这两个函数库,保证能够正常在模拟器和真机运行。

涉及到的开源框架

传输的流媒体框架使用GStreamer
SDK下载地址:
http://docs.gstreamer.com/display/GstSDK/Installing+the+SDK
教程下载地址:
http://docs.gstreamer.com/display/GstSDK/Android+tutorial+1%3A+Link+against+GStreamer

代码中首先加载本地函数库,提供一个native方法.

package org.freedesktop.gstreamer;

import android.content.Context;

public class GStreamer {
    private static native void nativeInit(Context context) throws Exception;

    static {
        System.loadLibrary("gstreamer_android");
    }

    public static void init(Context context) throws Exception {
        nativeInit(context);
    }
}

程序一开始调用init方法。

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        mContext = this;
        try {
            GStreamer.init(mContext);
        } catch (Exception e) {
            Log.e(TAG, "Can't initialize GStreamer" + e.getMessage());
            finish();
        }
        //.....
    }

关于具体通信主要参考开源项目flexVDI/launcher-mobile

https://github.com/flexVDI/launcher-mobile

函数库源码通过cerbero获取
https://github.com/EricssonResearch/cerbero
或者
https://github.com/flexVDI/cerbero

下面一大堆native方法,大部分都是和手势 / 输入内容交互的。(请忽略native方法红色警告)

最后

代码还是比较多,没法一一列举,水了一篇。原谅我吧。以后有时间肯定会详细的分享出来。

更多精彩请关注微信公众账号likeDev
这里写图片描述

相关文章
|
16天前
|
存储 Java Android开发
探索安卓应用开发:构建你的第一个"Hello World"应用
【9月更文挑战第24天】在本文中,我们将踏上一段激动人心的旅程,深入安卓应用开发的奥秘。通过一个简单而经典的“Hello World”项目,我们将解锁安卓应用开发的基础概念和步骤。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供一次实操体验。从搭建开发环境到运行你的应用,每一步都清晰易懂,确保你能顺利地迈出安卓开发的第一步。让我们开始吧,探索如何将一行简单的代码转变为一个功能齐全的安卓应用!
|
1天前
|
Ubuntu Linux Android开发
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
本文介绍了如何在Android设备上安装Termux和AnLinux,并通过这些工具运行Ubuntu系统和桌面环境。
9 2
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
|
4月前
【干货】手机投屏到电脑
【干货】手机投屏到电脑
61 1
|
29天前
|
IDE Java 程序员
安卓应用开发入门:打造你的第一个“Hello World”
【9月更文挑战第11天】在编程的世界里,每一个初学者的旅程都从一个简单的“Hello World”开始。本文将带领安卓开发的新手们,通过简单直观的方式,一步步构建出自己的第一个安卓应用。我们将探索安卓工作室(Android Studio)的安装、项目的创建,以及如何运行和调试你的应用。无论你是编程新手还是想扩展技能的老手,这篇文章都将为你打开一扇通往安卓世界的大门。
89 7
|
1月前
|
自然语言处理 决策智能 Python
同时操控手机和电脑,100项任务,跨系统智能体评测基准有了
【9月更文挑战第9天】近年来,随着人工智能技术的进步,自主智能体的应用日益广泛。为解决现有评测基准的局限性,研究人员推出了CRAB(Cross-environment Agent Benchmark),这是一种支持跨环境任务的新框架,结合了基于图的精细评估方法和高效的任务构建机制。CRAB框架支持多种设备并可轻松扩展至任何具备Python接口的环境。首个跨平台基准CRAB-v0包含100项任务,实验显示GPT-4单智能体在完成率方面表现最佳。CRAB框架为智能体研究提供了新机遇,但也面临计算资源和评估准确性等方面的挑战。
55 9
|
29天前
|
IDE Java API
安卓应用开发入门:打造你的第一个"Hello World"
【9月更文挑战第11天】在探索安卓开发的海洋中,每个开发者的航行都从简单的"Hello World"开始。本文将作为你的航标,引导你驶向安卓应用开发的精彩世界。我们将一起启航,通过浅显易懂的语言和步骤,学习如何构建并运行你的第一个安卓应用。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供所需的知识和信心。准备好了吗?让我们揭开安卓开发的神秘面纱,一起创造些令人兴奋的东西吧!
|
2月前
|
搜索推荐 Android开发
学习AOSP安卓系统源代码,需要什么样的电脑?不同配置的电脑,其编译时间有多大差距?
本文分享了不同价位电脑配置对于编译AOSP安卓系统源代码的影响,提供了从6000元到更高价位的电脑配置实例,并比较了它们的编译时间,以供学习AOSP源代码时电脑配置选择的参考。
93 0
学习AOSP安卓系统源代码,需要什么样的电脑?不同配置的电脑,其编译时间有多大差距?
|
2月前
|
XML IDE Java
安卓应用开发入门:打造你的第一个“Hello World”
【8月更文挑战第31天】 在安卓的浩瀚宇宙中,每一个新星都从一句简单的问候开始闪耀。本文将作为你的航标,引导你探索安卓开发的银河系。无论你是初心者还是资深开发者,构建第一个“Hello World”应用总是令人兴奋的里程碑。通过这篇文章,我们将一起搭建起通往安卓开发世界的桥梁。让我们摒弃复杂的术语,用最简单直白的语言,一步步地走过这段旅程。准备好了吗?让我们一起开启这段冒险吧!
|
2月前
|
Android开发
【Azure 环境】记录使用Notification Hub,安卓手机收不到Push通知时的错误,Error_Code 30602 or 30608
【Azure 环境】记录使用Notification Hub,安卓手机收不到Push通知时的错误,Error_Code 30602 or 30608
|
3月前
|
存储 移动开发 Android开发
使用kotlin Jetpack Compose框架开发安卓app, webview中h5如何访问手机存储上传文件
在Kotlin和Jetpack Compose中,集成WebView以支持HTML5页面访问手机存储及上传音频文件涉及关键步骤:1) 添加`READ_EXTERNAL_STORAGE`和`WRITE_EXTERNAL_STORAGE`权限,考虑Android 11的分区存储;2) 配置WebView允许JavaScript和文件访问,启用`javaScriptEnabled`、`allowFileAccess`等设置;3) HTML5页面使用`<input type="file">`让用户选择文件,利用File API;