最近了解谷歌别人写安卓软件操控电脑智能家具等,感觉很有趣就去了解一下,首先拿到软件就是反编译看看里面源代码了解怎么去实现的,本人在校一名大学生技术比较垃圾,大神勿喷(⁎⁍̴̛ᴗ⁍̴̛⁎)!
【软件名称】: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代码,实现了能够随机播放音乐,可以用手机关机电脑文件里所有东西,手机变成了键盘以及鼠标,更可怕的是能够做游戏炳