同wifi,手机控制电脑以及智能家具实现代码

最近了解谷歌别人写安卓软件操控电脑智能家具等,感觉很有趣就去了解一下,首先拿到软件就是反编译看看里面源代码了解怎么去实现的,本人在校一名大学生技术比较垃圾,大神勿喷(⁎⁍̴̛ᴗ⁍̴̛⁎)!
【软件名称】:WIFI Mouse Pro
【软件大小】:约10MB 
【重要声明】:只供用来学习以及参考     
【软件下载】: https://aweikejiyuan.lanzous.com/b015guftc?from=singlemessage&isappinstalled=0
【软件功能】:
1.支持语音识别并发送文本到电脑端,支持Android系统键盘的输入
,这个是最牛逼的,再也不要说我打字慢啦!
2. 支持鼠标的光标移动可以调节灵敏度,和鼠标一样具有左键右键以及滚动条
3.支持自动连接电脑端,还可以远程操控把电脑变成横屏竖屏都可
4.支持媒体播放控制,ppt演示控制,电脑放桌子上人在床上不舒服吗
5.支持全屏幕的触摸板,变成游戏机,玩游戏更爽快
6.支持全屏幕的全真实体键盘,敲代码写作业真的舒服
7.支持实体键盘的快捷键和热键软件特色:
8.支持整理电脑中文件以及打开使用
9.具备截屏和关机睡眠注销等控件,真的不要太方便
【支持的手势识别有】
1.单个手指轻触屏幕代表单击
2.单个手指快速单击代表双击
3.两个手指同时向上/向下滑动,代表滚动
4.三个手指移动代表拖拽
5.四个手指向下滑动代表显示桌面
4.三个手指移动代表拖拽
5.四个手指向下滑动代表显示桌面
6.四个手指向上滑动代表当前窗口最大化
7.四个手指左右滑动代表切换应用程序窗口
8.单个手机轻按一小会再移动,代表拖拽
9.两个手指同时单击代表鼠标右键单击
10.两个手指放大和缩小操作,类似手机的图片放大/缩小操作
【安装方法】
把MouseServer.exe在电脑上运行
电脑和手机需要在同一个wifi下才行

//
// Decompiled by Jadx - 1281ms
//
package com.necta.wifimousefree.material;

import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.pm.PackageManager;
import android.content.res.ColorStateList;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.StrictMode;
import android.util.Log;
import android.view.KeyEvent;
import androidx.appcompat.app.AppCompatActivity;
import com.android.vending.billing.IInAppBillingService;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.firebase.FirebaseApp;
import com.luckycat.function.toast.ToastUtils;
import com.necta.wifimousefree.material.account.accountFragment;
import com.necta.wifimousefree.material.discovery.discoveryFragment;
import com.necta.wifimousefree.material.discovery.gerneralWEBActivity;
import com.necta.wifimousefree.util.freePaid;
import com.necta.wifimousefree.util.sharedData;
import java.util.ArrayList;
import java.util.Iterator;

public class MainActivity extends AppCompatActivity {
    private Handler handler;
    private BottomNavigationView mBottomNavigation;
    private Context mContext;
    private IInAppBillingService mService;
    ServiceConnection mServiceConn = new 1(this);
    private cannotViewPager mViewPager;

    public MainActivity() {
    }

    static /* synthetic */ IInAppBillingService access$002(MainActivity mainActivity, IInAppBillingService iInAppBillingService) {
        mainActivity.mService = iInAppBillingService;
        return iInAppBillingService;
    }

    static /* synthetic */ void access$100(MainActivity mainActivity) {
        mainActivity.checkNBOfeature();
    }

    static /* synthetic */ cannotViewPager access$200(MainActivity mainActivity) {
        return mainActivity.mViewPager;
    }

    public void handleMessage() {
        this.handler = new 2(this);
    }

    public String getversionName(Context context) {
        try {
            return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
            return "";
        }
    }

    /* JADX WARNING: type inference failed for: r7v0, types: [android.content.Context, com.necta.wifimousefree.material.MainActivity, androidx.appcompat.app.AppCompatActivity] */
    protected void onCreate(Bundle bundle) {
        ToastUtils.show();
        MainActivity.super.onCreate(bundle);
        handleMessage();
        if (sharedData.getDefault(this).getBoolean("keepscreen", true)) {
            getWindow().addFlags(128);
        }
        Intent intent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
        intent.setPackage("com.android.vending");
        bindService(intent, this.mServiceConn, 1);
        setContentView(0x7f0c002a);
        this.mContext = this;
        if (!(getIntent() == null || getIntent().getAction() == null || !getIntent().getAction().equals("android.intent.action.auto_connect"))) {
            sharedData.getDefault(this.mContext).saveBoolean("setautoconnect", true);
        }
        boolean z = sharedData.getDefault(this.mContext).getBoolean("autoconnectlast", true);
        if (z) {
            sharedData.getDefault(this.mContext).saveBoolean("setautoconnect", true);
        }
        if (getIntent().getExtras() != null) {
            String str = (String) getIntent().getExtras().get("mtype");
            String str2 = (String) getIntent().getExtras().get("mvalue");
            if (!(str == null || str2 == null)) {
                Log.i("mtype, mvalue=", str + " " + str2);
                if (z) {
                    sharedData.getDefault(this.mContext).saveBoolean("setautoconnect", false);
                }
                if (str.equals("1")) {
                    startActivity(new Intent(this, gerneralWEBActivity.class).putExtra("openURL", str2));
                } else if (str.equals("2")) {
                    Intent intent2 = new Intent("android.intent.action.VIEW");
                    intent2.setData(Uri.parse(str2));
                    startActivity(intent2);
                }
            }
        }
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build());
        FirebaseApp.initializeApp(this);
        Intent intent3 = getIntent();
        intent3.getAction();
        intent3.getData();
        this.mBottomNavigation = findViewById(0x7f090028);
        ColorStateList colorStateList = new ColorStateList(new int[][]{new int[]{-16842912}, new int[]{16842912}}, new int[]{getResources().getColor(0x7f060030), getResources().getColor(0x7f0600a1)});
        this.mBottomNavigation.setItemTextColor(colorStateList);
        this.mBottomNavigation.setItemIconTintList(colorStateList);
        this.mViewPager = findViewById(0x7f090208);
        setupViewPager();
        this.mBottomNavigation.setOnNavigationItemSelectedListener(new 3(this));
    }

    private void setupViewPager() {
        BottomFragmentAdapter bottomFragmentAdapter = new BottomFragmentAdapter(getSupportFragmentManager());
        bottomFragmentAdapter.addFragment(new mainFragment());
        bottomFragmentAdapter.addFragment(new discoveryFragment());
        bottomFragmentAdapter.addFragment(new accountFragment());
        this.mViewPager.setAdapter(bottomFragmentAdapter);
    }

    public void onPause() {
        MainActivity.super.onPause();
    }

    public void onResume() {
        MainActivity.super.onResume();
    }

    public void onStart() {
        MainActivity.super.onStart();
    }

    private boolean checkFeature(ArrayList<String> arrayList, String str) {
        boolean z;
        Iterator<String> it = arrayList.iterator();
        while (true) {
            if (it.hasNext()) {
                if (it.next().equals(str)) {
                    z = true;
                    break;
                }
            } else {
                z = false;
                break;
            }
        }
        if (z) {
            Log.i("has bought", str);
        } else {
            Log.i("has not bought", str);
        }
        return z;
    }

    /* JADX WARNING: type inference failed for: r6v0, types: [android.content.Context, com.necta.wifimousefree.material.MainActivity] */
    private void checkNBOfeature() {
        try {
            Bundle purchases = this.mService.getPurchases(3, getPackageName(), "inapp", (String) null);
            Log.i("restorefeatures", "start.....");
            int i = purchases.getInt("RESPONSE_CODE");
            Log.i("restorefeatures", "result :" + i);
            if (i == 0) {
                ArrayList<String> stringArrayList = purchases.getStringArrayList("INAPP_PURCHASE_ITEM_LIST");
                purchases.getStringArrayList("INAPP_PURCHASE_DATA_LIST");
                purchases.getStringArrayList("INAPP_DATA_SIGNATURE_LIST");
                purchases.getString("INAPP_CONTINUATION_TOKEN");
                freePaid freepaid = new freePaid(this);
                freepaid.setMediaController(checkFeature(stringArrayList, "mediacontroller"));
                freepaid.setFullkeyboard(checkFeature(stringArrayList, "fullkeyboard"));
                freepaid.setJoystick(checkFeature(stringArrayList, "joystick"));
                freepaid.setRDP(checkFeature(stringArrayList, "rdp"));
                freepaid.setFileExplorer(checkFeature(stringArrayList, "fileexplorer"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void onDestroy() {
        MainActivity.super.onDestroy();
        if (this.mService != null) {
            unbindService(this.mServiceConn);
        }
        this.handler.removeMessages(1);
    }

    public boolean onKeyDown(int i, KeyEvent keyEvent) {
        if (i == 25) {
            try {
                sharedData.getDefault(this.mContext).getOutStream().write("VOLUMEDN\n".getBytes());
                return true;
            } catch (Exception unused) {
                return false;
            }
        } else if (i != 24) {
            return MainActivity.super.onKeyDown(i, keyEvent);
        } else {
            try {
                sharedData.getDefault(this.mContext).getOutStream().write("VOLUMEUP\n".getBytes());
                return true;
            } catch (Exception unused2) {
                return false;
            }
        }
    }
}

上面是主要java代码,实现了能够随机播放音乐,可以用手机关机电脑文件里所有东西,手机变成了键盘以及鼠标,更可怕的是能够做游戏炳

猜你喜欢

转载自blog.csdn.net/mrhejiachao/article/details/107750607