开发SDK必备!保存游客登录的账号密码截图到本地。

StringBoot+Vue实现游客或用户未登录系统前、可以浏览商品等信息、但是不能购买商品或者加入购物车等操作。登录系统显示用户的登录名(源码+讲解) 阅读详情

最近一直在开发自己公司的SDK,前段时间把SDK的总体框架搭好了。就进入了实际功能的开发。SDK的第一个功能就是游客登录功能。换一种说法是试玩账号登录。就是由后台给用户分配账号和密码。用户可以跳过注册,和登录的步骤直接进入游戏体验。相信很多游戏都是会有这个功能的。所以我们公司也不例外!

废话少说,直接进入正题。先说说功能实现的需求,很简单。

1.用户点击游客登录时,弹出对话框提示用户:当前是试玩账号,要尽快绑定为正式账号,同时我们会保存试玩账号的截图到本地

2.通过一系列字段去请求后台,获取试玩账号和密码。然后显示到界面上

3.保存截图到本地。

需求就这么多,前面其实都很简单的。就是一些常规操作,接下来我要重点说的是,保存截图到本地。我是怎么实现的。因为我是使用Dialog方式显示的,刚开始使用了

	View dView = ((Activity) HWControl.getInstance().getContext()).getWindow().getDecorView();
		dView.setDrawingCacheEnabled(true);
		dView.buildDrawingCache();
		Bitmap bitmap1 = Bitmap.createBitmap(dView.getDrawingCache());

这种方式进行截图的。但是这就有很大的问题了!因为这个getDecorView只能获取到对应activity的顶层view。而Dialog是悬浮在activity之上的。所以截取出来的图,是没有Dialog的。好了,我想activity不行的,那我直接用Dialog对象对获取截图。于是就有了下面的代码

//如果需要同时保存打开的dialog的截图,可以这么做,如果不需要,上面的bitmap就是当前activity的截图了。
	    View dialogView = LoginTrialDialog.getInstance().getDialog().getWindow().getDecorView();
	    LogUtils.e("dialogView---->"+dialogView);
	    int location2[] = new int[2];
	    dialogView.getLocationOnScreen(location2);
	    dialogView.setDrawingCacheEnabled(true);
	    dialogView.buildDrawingCache();

但是这还是有问题的,就是截出来的图,高度是不对的。这是什么问题,我目前还没有找不出来。因为这个问题,让我浪费了很多时间。换了很多种姿势去截这块图,就是截出来不正常。后来灵机一动,我发现我没必要一直纠结怎么去截图实现这个功能啊。我可以直接通过canvas 去画出来。然后保存为本地图片。这样一来我就不用想怎么去截图了。

我可以通过canvas 拿到相应的资源,去画出来。直接上代码

/**
		 * 我们先画要保存的图
		 */
		Bitmap localBitmap1 = getBitmap(paramContext, "fg_guest_find_uid");//背景图片
		int width = localBitmap1.getWidth();
		int height = localBitmap1.getHeight();
		Bitmap localBitmap2 = Bitmap.createBitmap(width, height,
				Bitmap.Config.ARGB_8888);
		Canvas localCanvas = new Canvas(localBitmap2);//绘制背景
		localCanvas.drawBitmap(localBitmap1, 0.0F, 0.0F, null);
		Paint localPaint = new Paint();//获取画笔
		localPaint.setColor(ResLoader.getColor(paramContext, "fg_find_text"));//设置画笔颜色
		localPaint.setAntiAlias(true);
		localPaint.setFilterBitmap(true);
		localPaint.setTextSize(20);
		localCanvas.drawText(paramString3,
				(width - getFontlength(localPaint, paramString3)) / 2.0F,
				height * 665 / 1920, localPaint);//根据位置 绘制相应的账号密码等
		localCanvas.drawText(paramString1,
				(width - getFontlength(localPaint, paramString1)) / 2.0F,
				height * 980 / 1920, localPaint);
		localCanvas.drawText(paramString2,
				(width - getFontlength(localPaint, paramString2)) / 2.0F,
				height * 1280 / 1920, localPaint);
		localCanvas.save(31);
		localCanvas.restore();

画出图片后,接下来就是保存图片了。

/**
		 * 保存图片到本地
		 */
		String str1 = Constant.GAME_FILE_PATH + paramContext.getPackageName();
		LogUtils.e("保存图片路径名str1----->" + str1);
		String str2 = str1 + File.separator + paramString + ".jpg";
		LogUtils.e("保存图片路径名str2----->" + str2);
		File localFile1 = new File(str1);
		File localFile2 = new File(str2);
		if (!localFile1.exists()) {
			localFile1.mkdirs();
		}
		try {
			if (localFile2.exists()) {
				localFile2.createNewFile();
			}
			LogUtils.e("这里执行了---->"+localFile2.getPath());
			FileOutputStream localFileOutputStream1 = new FileOutputStream(localFile2);
			paramBitmap.compress(Bitmap.CompressFormat.JPEG, 100,
					localFileOutputStream1);
			Intent localIntent = new Intent(
					"android.intent.action.MEDIA_SCANNER_SCAN_FILE");
			localIntent.setData(Uri.fromFile(localFile2));
			paramContext.sendBroadcast(localIntent);
		} catch (FileNotFoundException e) {

			LogUtils.e("fileNotFoudExceptrin---->"+e.toString());
			
		} catch (IOException ex) {
			LogUtils.e("IOException---->"+ex.toString());
		}

最后去看一波手机里面图库,很完美!我要的图,很安详地趟在图库里面了。通过这一个功能我总结了一个经验,有时候我们拿到一个需求的时候,太在乎怎么做,却忘记了为什么做。通往目标的路,都不是只有一条的。这条路走不通,我们就开始选择换条路前进了。

我是一名Android工程师,我为自己加油!

Android之游客登录模式 在我们的程序开发过程中,经常会涉及到登录用户名密码获取数据等操作,在这些过程中,会验证某些条件是否满足,如果不满足就无法继续,但有时候我们需要看到各种初始状态或者一些界面效果,那么该怎么办呢?就是使用游客登录模式。本资源通过一个例子简单介绍了如何开发游客登录模式! 立即下载

相关推荐

ios-使用keyChain持久化存储密码.zip

app卸载重启安装也可以读取数据,可用于简单的做为唯一标识

Android使用SharedPreferences保存账号密码

有很多的应用都会有保存密码和账号的功能,比如QQ。接下来就讲讲使用SharedPreferences来保存密码和账号,也许有些人会考虑的数据库,但是我个人认为对于保存简单的数据,使用的数据库就大材小用了,SharedPreferences比较轻量级 首先写好布局,只有两个输入框和一个按钮

夜雨飘零 4608

FastAdmin框架Token验证实战:从登录到API调用的完整流程

本文详细解析了在FastAdmin框架中实现Token验证的完整流程,从数据表设计、登录接口签发Token,到核心验证中间件的编写与路由配置,并探讨了在业务API中的调用与安全实践。内容涵盖Token生成策略、有效期管理及安全增强措施,为开发者提供了一套可落地的API身份验证解决方案。

nnn11的博客 917

游客模式android,Android之游客登录模式

在我们的程序开发过程中,经常会涉及到登录用户名密码获取数据等操作,在这些过程中,会验证某些条件是否满足,如果不满足就无法继续,但有时候我们需要看到各种初始状态或者一些界面效果,那么该怎么办呢?就是使用游客登录模式。下面使用一个例子说明如何使用游客登录模式。首先,做一个登录界面activity_main.xmlxmlns:tools="http://schemas.android.com/tools...

weixin_34401781的博客 3679

进芯AVP28335烧录避坑全记录:CCS、Uniflash、C2Prog、SDFlash四大工具配置详解

本文详细解析了进芯AVP28335芯片在烧录过程中遇到的常见问题及解决方案,涵盖CCS、Uniflash、C2Prog和SDFlash四大工具的配置要点。针对国产器件AVP28335的特殊需求,提供了从开发环境准备到烧录验证的全流程指南,帮助开发者高效完成程序烧录,避免常见陷阱。

weixin_30836759的博客 591

扣子(coze)案例^第22期:零代码打造小红书竞品监控系统+AI自动生成运营策略建议

本文详细介绍了如何利用扣子(coze)平台零代码搭建小红书竞品监控系统。该系统通过自动化工作流抓取竞品笔记数据,并存入飞书多维表格,结合AI能力自动生成包含可视化分析报告在内的运营策略建议,帮助运营者高效进行数据驱动的市场分析。

weixin_29313239的博客 1005

前端网站使用uuid解决游客登录模式

前端网站使用uuid解决游客登录模式

m0_50298323的博客 1188

手把手教你用ADuC845 DAC调试恒流电路(附实测数据与避坑指南)

本文详细介绍了如何利用ADuC845 DAC调试恒流电路,包括硬件搭建、DAC输出校准、低端死区问题解决方案及系统级调试技巧。通过实测数据和避坑指南,帮助工程师快速解决非线性输出和稳定性问题,提升电路性能。

life6的博客 337

Android 游客登录根据机型判断不同用户

用户游客登录是根据获取手机设备码,并进行MD5加密后将字符串传入后台从而判断不同机型的用户,但是同一款手机的设备码相同从而造成同一型号的手机用户登录后是同一个ID 解决方案:使用设备码去区分 public class DeviceCodeUtils { public static String getUniqueDeviceId(boolean isReadCache) { String sbhcm = CacheUtil.readString(CacheUtil.getDev.

Android攻城狮 1868

用简单仿真链路产生 WiFi CSI(不依赖专用工具箱,matlab实现)

这篇文章详细介绍了使用MATLAB仿真生成WiFi信道状态信息(CSI)的过程。内容包括:准备工作(定义OFDM和MIMO参数)、基本参数设置(天线数、FFT点数等)、构造训练OFDM符号、多径瑞利信道建模、逐天线时分发射接收处理、CSI信道估计方法,以及幅值和相位的可视化。通过BPSK调制和瑞利衰落信道仿真,实现了简单的CSI生成流程,为初学者理解CSI产生机理提供了直观指导。文章强调这仅是基础仿真,更深入的研究需要实际数据采集。文末还提供了WiFi指纹定位的相关参考资料。

静水流深,沧笙踏歌 1205

Python金融数据获取工具库之baostock使用详解

在金融数据分析和量化交易中,获取准确及时的市场数据是非常重要的。baostock是一个专门为中国股市数据提供支持的 Python 库,它提供了免费的股票数据接口,用户可以方便地获取股票、指数、基金等各种金融数据。本文将详细介绍baostock库,包括其安装方法、主要特性、基本和高级功能,以及实际应用场景,帮助全面了解并掌握该库的使用。

Rocky006的博客 5345

Android登陆一次后不用再次登陆(超简单)

在写一个小东西的时候碰到需要登陆一次就不用登陆了,想了很多方法,最后用的SharedPreferences。在最开始的时候可以初始化一下。例如:SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();SharedPreferences pref = getSharedPreferences...

zh2393673281的博客 1万+

针对so层不固定位置的动态加密,怎么解决?(面试题)

Android逆向之破解某应用加密算法(动态调试so和hook so代码):so 代码动态解密后才执行,我们可以在解密完成后获取解密后的代码或数据。Android逆向之旅—动态方式破解apk进阶篇(IDA调试so源码)如果你有更具体的加密场景,欢迎提供更多信息,我可以给出更详细的方案!某些 so 在运行时生成密钥,解密后再用。某APP密码加密算法分析。

SXXYNHHXX的博客 927

手游SDK-登录

一、登录 1、登录的基本流程:(以账密登录为例) 1)调用X_SDK的登录方法,进行SDK登录操作。即弹出登录框,等待用户输入账号密码。 2) X_SDK与SDK服务器进行通信,向SDK服务器传递对应信息。即把账号密码等信息传给服务器。 3)SDK服务器向X_SDK返回token,token中包含了玩家的验证信息。1、2、3 这三步可以理解为调用X_SDK的登录方法,然后等待服务器回调token。...

yeliang23的博客 4174

基于STM32、HAL库的SC16IS752IPW总线转UART驱动程序设计

/ FIFO空间不足。// 设置LCR寄存器的DLAB位为1以访问DLL/DLH。// 设置LCR寄存器,先访问DLL/DLH。// 设置LCR寄存器(不包含DLAB位)

corlin6688的博客 817

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Vue实现登录功能全套详解(含封装axios)

1、第一次登录的时候,前端调后端的登陆接口,发送用户名和密码2、后端收到请求,验证用户名和密码,验证成功,就给前端返回一个token3、前端拿到token,将token存储到localStorage和vuex中,并跳转路由页面4、前端每次跳转路由,就判断 localStroage 中有无 token ,没有就跳转到登录页面,有则跳转到对应路由页面5、每次调后端接口,都要在请求头中加token。

陈新科的博客 3万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

尚硅谷vue前端项目心得4

4.1 加入购物车按钮 发请求+路由跳转(传参)+购买信息也要传到新页面 //index.vue addShopcar(){ //1:在点击加入购物车这个按钮的时候,做的第一件事情,将参数带给服务器(发请求),通知服务器加入购车的产品是谁 this.$store.dispatch('addOrUpdateShopCart',{skuId:this.$route.params.skuid,skuNum:this.skuNum}) //this.$store.dispatch('addO

im_joy的博客 921

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

游戏连接服务器文件在那找,游戏服务器 账号 文件夹在哪

游戏服务器 账号 文件夹在哪 内容精选换一换用户成功安装Agent插件后,推荐您采用“修复插件配置”方式配置Agent。如果“修复插件配置”不成功或其他原因导致无法配置Agent,你可以采用本章节提供的手工方式配置Agent。Windows类型BMS暂不支持安装Agent。目前支持Linux操作系统和Windows操作系统。支持的系统请参见Agent支持的系统有哪些?。已成功安装A实际业务场景下,...

weixin_33622128的博客 851

万象物语找回服务器,万象物语角色没了怎么办 账号存档丢失怎么找回

万象物语许多玩家登录之后发现角色账号都没有了,怎么才能够找回呢?许多玩家再次体验游戏的时候却发现自己的账号信息都没有了,这到底是怎么回事呢?本次小编则为大家带来这方面的解答,感兴趣的玩家不妨一看吧!账号存档丢失找回方法?一般出现账号丢失都是因为玩家使用的是游客模式,游客模式在手机清理数据的时候就会导致存档丢失,或者重新安装游戏包的时候非常容易丢失,所以建议大家注册一个龙源账号来登录游戏,这样的话就...

weixin_32028965的博客 2019

关于游客账户创建的问题

游客账户的创建需要与设备进行绑定,这样才不会再更新或者玩家误删文件时导致的信息丢失

Hello Mingo 7306

游戏游客登录与账号登录

登录流程这一块,之前做功能没有接触到这一块,最近做登录踩了几个坑,下面来梳理一下: 我们这款app,之前是h5版的,在线上运营了大概一年,效果还比较好,但是h5版本的没有服务器,数据是采用云函数存储在云服务器的,当前看数据可以,打算快速的出一个app版本,先上台湾市场,看看效果,于是就接入了服务器,大部分的逻辑还是在前端,大约花了1-2个月左右接入完成,2020年11月份左右推出了app台版的,留存也比较好,次留大约有60%-70%,前后端各一个开发人员,之后又搭了一台h5端的服务器,把云函数数据库数据迁

qq_15092991的博客 6006

uniapp 游客模式下的数据封装

简历游客模式的数据: 全局接口封装: 调用没区别,还是本来的调法,不用任何改动,如图:

全易 812

iOS 记住密码\自动登录

定义了宏 #define AccountKey @"account" #define PwdKey @"pwd" #define RmbPwdKey @"rmb_pwd" #define AutoLoginKey @"auto_login" - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup

4068

教你快速高效接入SDK——手游聚合SDK的总体思路和架构

题记:很多做游戏开发的人,估计都或多或少地接过渠道SDK,什么UC,当乐,91,小米,360......据统计国内市场当前不下于100家渠道,还包括一些没有SDK的小渠道。每个渠道SDK接入的方法呢,多是大同小异。但是,正是这些小异,又让SDK的接入,产生了无穷无尽的变数。所以,接入SDK之前,如果你没有经验,或者没有被SDK坑过,那么当你看到这系列文章的时候,你很幸运,你可以避免这一切了。如果你

7万+
上一篇: 使用apktool反编译apk的资源文件与manifest文件报:Error: Unable to access jarfile XXXXX
下一篇: 解决:使用eclipse导出的jar,报控件找不到id,或者直接报控件空指针异常
阮小鬼
博客等级 码龄12年 74粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阮小鬼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值