【Android Studio学习】第二篇、APP实现画简易的波形图

使用Android创建一个波形图,可以显示峰值 可以使用 Android 的图表库 MPAndroidChart 来创建一个波形图。首先,在项目的 build.gradle 文件中添加 MPAndroidChart 的依赖: implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' 然后,在布局文件中添加 LineChart 控件: <com.github.mikephil.ch... 阅读详情
AI摘要

本文介绍如何在Android APP中实现简易波形图绘制功能,包括添加依赖、创建管理类、修改布局文件及代码,并提供仿真验证方法。

目录

第一部分、前言

1、效果展示

 2、参考博客

3、实现方式

第二部分、详细步骤

1、添加波形函数的依赖

 2、添加一个管理类

3、修改activity_main.xml文件的代码

 4、修改MainActivity.Java文件的代码

 5、连接手机进行仿真验证

 第三部分、总结

1、写在后面

2、完整工程代码

3、QQ群号 


第一部分、前言

        为了任务需求,还要实现APP能够画简易的折线图,为此,这篇博客会记录下我是如何实现简易的波形。

1、效果展示

        首先,看一下你想要的结果是不是下面这个样子的。

 2、参考博客

        我这里实现的只是别人博客一小部分代码,博客链接在下面,这篇博客真的讲的太好了。我文章中的代码大部分都是来源于这篇博客,所以一定要看。

(2条消息) Android图表控件MPAndroidChart——曲线图LineChart(多条曲线)动态添加数据_xhu_ww的博客-优快云博客_android linechart多条曲线addentry

3、实现方式

        这里我将在前一篇文章的工程基础上来实现这个功能,前面这篇博客主要是实现一个注册和登录界面,这篇博客加上波形的显示。【Android Studio学习】第一篇、制作一个拥有登录和注册功能的简易APP_大屁桃的博客-优快云博客

第二部分、详细步骤

1、添加波形函数的依赖

第一步、首先在Gradle Scripts下,打开第一个build.gradle,添加以下代码

//添加的依赖
allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

 第二步、其次再在Gradle Scripts下,打开第二个build.gradle,添加以下代码

implementation 'com.github.PhilJay:MPAndroidChart:v3.0.2'

 第三步、点击Sync Now,立即同步所需的依赖,然后等待完成

 2、添加一个管理类

第一步、在com.example.myapplication文件夹下,新建一个Java Class文件

 命名为LineChartFunction

 第二步、在LineChartFunction添加以下代码(画一条曲线的代码)。注意:如果想画多条曲线,请参考上面我提到的博客。

package com.example.myapplication;

import android.graphics.Color;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;


public class LineChartFunction {

    private LineChart lineChart;  //定义一个chart类型的数据
    private YAxis leftAxis;       //定义左y轴
    private YAxis rightAxis;      //定义右y轴
    private XAxis xAxis;          //定义x 轴
    private LineDataSet lineDataSet;
    private LineData lineData;

    //一条曲线
    public LineChartFunction(LineChart mLineChart, String name, int color) {
        this.lineChart = mLineChart;
        leftAxis = lineChart.getAxisLeft();
        rightAxis = lineChart.getAxisRight();
        xAxis = lineChart.getXAxis();
        initLineChart();
        initLineDataSet(name, color);
    }
    /**
     * 初始化LineChar
     */
    private void initLineChart() {
        //网格的背景是灰色还是白色
        lineChart.setDrawGridBackground(false);
        //显示边界线,边界线被加粗
        lineChart.setDrawBorders(false);
        //折线图例 标签 设置
        Legend legend = lineChart.getLegend();
        legend.setForm(Legend.LegendForm.LINE);
        legend.setTextColor(Color.BLACK); //设置Legend 文本颜色
        legend.setTextSize(11f);//折线的对应名称字的大小
        //显示位置
        legend.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
        legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT);
        legend.setOrientation(Legend.LegendOrientation.HORIZONTAL);
        legend.setDrawInside(false);
        //X轴设置显示位置在底部
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setGranularity(1f);
        xAxis.setLabelCount(10);
        //取消右边y轴的显示
        rightAxis.setEnabled(false); //右侧Y轴不显示
        //设置网格颜色
        leftAxis.setGridColor(Color.WHITE); //网格线颜色
        leftAxis.setAxisLineColor(Color.BLACK); //Y轴颜色
        xAxis.setGridColor(Color.WHITE); //网格线颜色
        xAxis.setAxisLineColor(Color.BLACK); //X轴颜色
        //保证Y轴从0开始,不然会上移一点
        leftAxis.setAxisMinimum(0f);
        rightAxis.setAxisMinimum(0f);
    }
    /**
     * 初始化折线(一条线)
     *
     * @param name
     * @param color
     */
    private void initLineDataSet(String name, int color) {

        lineDataSet = new LineDataSet(null, name);
        lineDataSet.setLineWidth(1.5f);
        lineDataSet.setCircleRadius(1.5f);
        lineDataSet.setColor(color);//设置除了点之外折线的颜色
        //设置曲线值的圆点是实心还是空心
        lineDataSet.setDrawCircleHole(false);//false  实心  true  空心
        lineDataSet.setCircleColor(color);//设置折线上点的颜色也为黑色
        lineDataSet.setHighLightColor(color);
        //设置曲线填充
        lineDataSet.setDrawFilled(true);//就是曲线下面的颜色
        lineDataSet.setFillColor(color);//填充颜色

        lineDataSet.setDrawValues(false);//曲线上每个点的值,这里是取消显示

        lineDataSet.setAxisDependency(YAxis.AxisDependency.LEFT);
        lineDataSet.setValueTextSize(10f);//设置显示值的字体大小
        lineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER);//线模式为圆滑曲线(默认折线)

        //添加一个空的 LineData
        lineData = new LineData();
        lineChart.setData(lineData);
        lineChart.invalidate();
    }
    /**
     * 动态添加数据(一条折线图)
     *
     * @param number
     */
    public void addEntry(int number) {

        //最开始的时候才添加 lineDataSet(一个lineDataSet 代表一条线)
        if (lineDataSet.getEntryCount() == 0) {
            lineData.addDataSet(lineDataSet);
        }
        lineChart.setData(lineData);
        Entry entry = new Entry(lineDataSet.getEntryCount(), number);
        lineData.addEntry(entry, 0);
        //通知数据已经改变
        lineData.notifyDataChanged();
        lineChart.notifyDataSetChanged();
        //设置在曲线图中显示的最大数量
        lineChart.setVisibleXRangeMaximum(20);
        //移到某个位置
        lineChart.moveViewToX(lineData.getEntryCount() - 5);
    }
    /**
     * 设置Y轴值
     *
     * @param max
     * @param min
     * @param labelCount
     */
    public void setYAxis(float max, float min, int labelCount) {
        if (max < min) {
            return;
        }
        leftAxis.setAxisMaximum(max);
        leftAxis.setAxisMinimum(min);
        leftAxis.setLabelCount(labelCount, false);

        rightAxis.setAxisMaximum(max);
        rightAxis.setAxisMinimum(min);
        rightAxis.setLabelCount(labelCount, false);
        lineChart.invalidate();
    }
}

3、修改activity_main.xml文件的代码

第一步、原始activity_main.xml布局文件中,只有一个“Hello World”,这里添加画曲线的所需的控件

 第二步、将代码改为以下代码,注意:将原始的约束布局androidx.constraintlayout.widget.ConstraintLayout改为线性布局LinearLayout。

并且改为线性布局方向为垂直android:orientation="vertical"。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="数据波形图:"
            android:textSize="25sp"
            android:textColor="@color/colorBlack" />
    </LinearLayout>
    <!--下面为折线图的布局控件-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <com.github.mikephil.charting.charts.LineChart
            android:id="@+id/dynamic_chart1"
            android:layout_width="match_parent"
            android:layout_height="200dp"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="随机数据"
            android:id="@+id/button_data1"
            android:layout_gravity="center" />
    </LinearLayout>

</LinearLayout>

 第三步、得到的布局结果

 4、修改MainActivity.Java文件的代码

第一步、MainActivity.Java修改代码如下

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.github.mikephil.charting.charts.LineChart;

public class MainActivity extends AppCompatActivity {

    //定义画图框变量
    private LineChartFunction dynamicLineChartManager1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //寻找控件ID
        final LineChart mChart1 = findViewById(R.id.dynamic_chart1);
        final Button button_data1 = findViewById(R.id.button_data1);
        dynamicLineChartManager1 = new LineChartFunction(mChart1, "数据", Color.GREEN);
        dynamicLineChartManager1.setYAxis(100, 0, 10);//最大值,最小值,中间刻度值的数量
        //按下按键实现的功能
        button_data1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //数据传入端口
                dynamicLineChartManager1.addEntry((int) (Math.random() * 100));
            }
        });
    }
}

添加的代码

 5、连接手机进行仿真验证

使用方法:按下“随机数据”按键就会产生一个随机数,不停的点击按键,进而产生的随机数就构成了波形的数据点。

 注意:后期如果想显示单片机或者云端传过来数据的波形,只需要将这里的随机数改为APP接收的数据即可。

 第三部分、总结

1、写在后面

        需要注意的是,博主这里只是去复现了别人的代码,如果想实现更高级的波形,比如一张图画多曲线,条形图等,请参考我上面提及到的博客。

2、完整工程代码

        这是博主的完整的代码,可以直接下载,但是你是不是要关注点赞收藏,然后再下载?🤔🤔🤔博客中的工程

3、QQ群号 

        有问题的小伙伴现在可以进群询问啦,当然我所有博客中涉及到的参考资料和工程都在群文件里。之前也在博客中放过群号,但是那个时候没有时间,群里面的小伙伴发的消息我都没时间回复,所以就把群号给屏蔽了,现在读研了,有时间了。欢迎大家的加入,群号:1020775171。群聊目前处于起步阶段,哈哈哈哈哈😂😂😂

Android IPC 通讯机制源码分析【中】 其实很简单就下面这张图,含概了Android所有需要学的知识点,一共8大板块:架构师筑基必备技能Android框架体系架构(高级UI+FrameWork源码)360°Androidapp全方位性能调优设计思想解读开源框架NDK模块开发移动架构师专题项目实战环节移动架构师不可不学习微信小程序混合开发的flutterAndroid学习的资料我呢,把上面八大板块的分支都系统的做了一份学习系统的资料和视频,大概就下面这些,我就不全部写出来了,不然太长了影响大家的阅读。 阅读详情

相关推荐

安卓开发语音交互实战:集成ML Kit实现Sesame Preview语音模式

语音识别技术作为人机交互的重要演进方向,其核心原理是将音频信号转化为可处理的文本数据。在安卓平台上,Google ML Kit提供了便捷的语音识别API,通过离线或在线模型实现高精度转换。这项技术的工程价值在于能够解放开发者双手,提升操作效率,特别适用于需要快速迭代的UI预览和调试场景。通过关键词匹配或自然语言处理(NLP)解析指令,开发者可以构建出类似Sesame Preview的语音交互工具,实现实时操控界面元素、调整属性参数等功能,从而优化开发工作流。

weixin_33857679的博客 440

AndroidMPChart中的LineChart使用的一些总结

引入依赖 1.在项目的module中的build.gradle添加如下代码: allprojects { repositories { maven { url "https://jitpack.io" } } } 2. 在依赖中添加如下代码依赖: dependencies { implementation 'com....

等待岁月 5105

Android零权限传感器监测APP开发指南:从SensorManager到数据可视化

传感器是智能设备感知物理世界的基础,通过加速度计、陀螺仪、磁力计等硬件采集运动、方向和环境数据。其工作原理基于微机电系统(MEMS)将物理量转化为电信号,经系统API提供给应用层。在移动开发中,传感器技术为运动追踪、导航、增强现实等场景提供了核心数据支撑。Android平台通过SensorManager统一管理传感器,开发者可调用标准API获取实时数据流。本文以**零权限**设计和**传感器数据解析**为重点,通过一个具体的传感器监测工具实例,详解如何利用SensorManager获取多类型传感器数据,并实

weixin_30402343的博客 384

android开源图表库MPAndroidChart

最近一个项目需要用到表格进行统计显示,本来用的是的achartengine,后来发现一个更加强大的开源框架MPAndroidChart。 下面简单介绍下MPAndroidChart,MPAndroidChart的效果还是蛮好的,提供各种动画,这个也是我使用MPAndroidChart,而且放弃achartengine的原因。 Github地址连接,后面是youtube上面演示MPAndroid

流水不腐小夏 6万+

安卓语音交互应用Sesame Preview技术解析与实现指南

语音交互技术作为现代人机交互的重要分支,其核心原理在于通过自动语音识别(ASR)将声音信号转化为文本指令,再结合自然语言处理(NLP)理解用户意图,最终通过文本转语音(TTS)等技术给予反馈。这项技术的价值在于解放用户双手,提升操作效率与可访问性,尤其在移动、车载及智能家居等场景中应用广泛。在安卓平台实现语音功能,通常涉及权限管理、音频采集、网络通信与本地推理等关键技术环节。以近期上线的Sesame Preview应用为例,其获得好评的“语音模式”正是此类技术的典型实践,展示了如何通过优化识别准确率与响应延

weixin_30245867的博客 347

MPAndroidChart 曲线图LineChart使用部分示例

前段是使用LineChart画图,有不少总结,毕竟要满足客户各种需求。有个是曲线动态变化,有一个是查询后查看数据。 这个开源库的GitHub地址: https://github.com/PhilJay/MPAndroidChart 1,直接看两个封装的代码 import android.content.Context; import com.github.mikephil.charti...

mmsx990的博客 8115

【Android Studio学习】第一篇、制作一个拥有登录和注册功能的简易APP

【Android Studio学习】第一篇、制作一个拥有登录和注册功能的简易APP

大屁桃的博客 3万+

Android Studio 用手机蓝牙连接单片机并显示波形

点击“连接”按钮与周围的蓝牙设备进行配对,自动接收规定格式的信号,并显示对应的波形图、峰峰值、频率、THDx、五次谐波的归一化幅值 说明链接:https://blog.youkuaiyun.com/qq_39542170/article/details/121691497

Android Studio 开发实践——简易版音游APP(一)

FREE ——简易版音游APP 一、APP介绍 通过识别本地曲库,对音频文件进行识别提取出时间点,来产生滑块进行动态点击的畅玩过程,享受音乐的律动美感。界面主要仿照节奏大师等音游app,整体风格呈黑金色。(注:此app开发为课程作业,部分图片来自网图非原创,未曾商用) 二、APP特点 1.多种模式选择 常规设置:模式可选择双轨道或者四轨道;滑块数量可以选滑块较少或滑块...

qq_43533416的博客 2万+

Cesium进阶学习四、shadertoy(着色器)

Cesium进阶学习着色器

程迷学习的博客 4322

ArcGIS实战:利用IDW反距离权重法实现气象数据的批量空间插值

本文详细介绍了如何利用ArcGIS中的IDW反距离权重法实现气象数据的批量空间插值。通过实战案例和脚本示例,展示了IDW插值在气象数据分析中的高效应用,包括算法原理、参数调优、批处理自动化及常见问题解决方案,帮助用户快速生成连续分布的气象地图。

weixin_29051149的博客 240

开源 java android app 开发(十八)最新编译器Android Studio 2025.1.3.7

本文记录了从嵌入式开发转向Android应用开发的学习过程,重点讲解了最新版Android Studio 2025.1.3.7的使用经验。主要内容包括:1)创建Java工程时的语言选择注意事项;2)新版gradle面板设置及混淆封装aar的方法;3)aar库的使用步骤。文中特别强调了新版IDE的配置变化,如gradle面板默认不显示封装库栏目等问题,并提供了解决方案。文章还列出了作者完整的Android开发学习系列文章链接,涵盖环境搭建、UI设计、数据存储、网络通信等全方位内容。

ajassi2000的博客 4618

Java网页访问报错?手把手教你解决JRE插件缺失和浏览器拦截问题(附详细截图)

本文针对Java网页访问时常见的JRE插件缺失和浏览器拦截问题,提供了详细的诊断与解决方案。文章首先解释了问题根源在于现代浏览器出于安全考虑停止了对Java插件的支持,然后手把手指导用户确认Java安装、在控制面板配置安全站点列表,并针对Chrome、Edge、Firefox等主流浏览器的不同拦截机制给出了具体的应对策略,最后提供了系统性的故障排查清单,帮助用户彻底解决访问障碍。

weixin_29233857的博客 223

【亲测免费】 Android Studio 蓝牙连接单片机并显示波形

Android Studio 蓝牙连接单片机并显示波形 【下载地址】AndroidStudio蓝牙连接单片机并显示波形 本项目提供了一个资源文件,用于在Android Studio中实现通过手机蓝牙连接单片机,并实时显示接收到的信号波形。用户可以通过点击“连接”按钮与周围的蓝牙设备进行配对,系统会自动接收规定格式的信号,...

gitblog_09730的博客 922

ROS Navigation global_planner框架解析

ROS Navigation global_planner框架解析主要讲一下我看源码总结的框架,如果大家跟着这个框架看源码的话可能会看的比较快。主要讲解global_planner关键配置参数含义及关键函数Astar,Dijkstra,QuadraticCalculator::calculatePotential,PotentialCalculator::calculatePotential,GridPath::getPath,GradientPath::getPath.

Jeff_Lee_的博客 4694

新一代XMOS会议四麦方案主控芯片 XVF3800

2023年,知名的音频芯片制造厂商 XMOS 正式发布了新一代会议麦阵芯片片 XVF3800 ,这款芯片采用最先进的四麦音频算法,可在嘈杂的环境中提供高质量语音,算法支持圆形、条形阵列,可根据应用场景组成不同的产品形态。传统的麦阵解决方案,不仅需要捕捉会议中的人声,也会同时捕捉环境中的其他噪声,而 XMOS 先进的语音算法解决了这一问题。声学回声消除功能可消除麦克风音频输入的回声,同时减少远端回声,使 XVF3800 能提取清晰的语音信号。• 180度拾音条形麦克风阵列。• 360度拾音环形麦克风阵列。

PawPaw_electron的博客 785

开源 java android app 开发(一)开发环境的搭建

本文记录了作者从嵌入式软件开发转向Android应用开发的学习经历,重点介绍了Android Studio开发环境的安装与配置过程。文章详细描述了IDE的安装、SDK的安装与配置、环境设置以及Gradle的配置,特别是解决了由于jcenter网站关闭导致的证书错误问题,通过添加阿里云等国内镜像库来确保依赖库的正常拉取。此外,还提到了使用国内镜像加速Gradle的下载,以提高开发效率。本文旨在为遇到类似问题的开发者提供参考和解决方案。

ajassi2000的博客 703

【FreeSwitch开发实践】外呼网关配置(拨打电话)

FreeSwitch开发一个重要应用是外呼,所谓外呼就拨打真实电话或手机号呼叫,配合语音机器人可以实现智能客服的功能。外呼配置主要是配置外呼服务器,外呼服务器主要指SIP网关,每个外呼服务器就是一个SIP节点,FreeSwitch服务也可以是一个SIP节点。本文主要介绍了FreeSwitch外呼相关配置,主要有外呼配置的模式,包括注册模式和非注册模式网关加载的查看方法拨号中常见的呼出配置和呼入配置如果觉得有些帮助或觉得文章还不错,请关注一下博主,你的关注是我持续写作的动力。............

xiao2macf的专栏 1万+

Android用蓝牙连接单片机并显示波形(可以直接运行

零基础用手机蓝牙连接单片机并显示波形1 预期功能2 具体实现开发环境各个模块布局蓝牙连接接收数据线程数据显示3 资源链接 1 预期功能 ■点击“连接”按钮与周围的蓝牙设备进行配对,自动接收规定格式的信号,并显示对应的波形图、峰峰值、频率、THDx、五次谐波的归一化幅值 正常运转时,“连接”按钮下方会显示“send” 发送信号的格式:“send,THDx值,2次谐波值,3次谐波值,4次谐波值,5次谐波值,待画波形幅度值,待画波形频率值,待画波形(长度不限),end ” 举个栗子:“send,3.11,

qq_39542170的博客 8695

摇骰子、抽奖转盘酒桌游戏 人生重启模拟器小程序源码分享-开通流量主躺着赚钱

摇骰子、抽奖转盘酒桌游戏 人生重启模拟器小程序源码分享-开通流量主躺着赚钱

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1650

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

android studio 数据波形

我整理的一些关于【数据】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/eDOcp1Android Studio 数据波形显示的实现 在现代的移动应用开发中,数据可视化是一项非常重要的功能,能够帮助用户更直观地理解数据。Android Studio是开发Android应用程序...

weixin_40646978的博客 276

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

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

开源 java android app 开发(十二)封库.aar

本文记录了Java Android开发中打包封库的过程,主要解决两种情况:1)简化编译流程时封装不需修改的代码;2)提供SDK时保护源码。通过创建Library模块(包含AddFun和MulFun两个计算类),修改build.gradle开启代码混淆生成.aar库文件。测试工程通过修改gradle配置引入该库,在MainActivity成功调用库中的加减法功能并输出结果,验证了.aar库的有效性。该方案既能提高开发效率,又能实现代码保护。(149字)

ajassi2000的博客 1254

pscad IEEE标准系统搭建说明

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

Android Studio-Memory Monitor

一、Android Studio-Memory Monitor 使用方法 run起你的项目,找到Memory Monitor窗口,选择Memory [转]内存变化波形图 另外,还可选择查看CPU和GPU还有NetWork的使用情况。 网络使用波形图.png 其中NetWork的频繁使用是造成应用耗电的关键,70%左右的电量是被上报数据,检查位置信息,定时

09的专栏 937

Android App逆向工程实战:从环境搭建到算法还原的完整流程

逆向工程是理解软件内部工作原理的关键技术,通过分析程序的结构和行为来揭示其实现逻辑。其核心原理包括静态分析和动态分析,静态分析通过反编译工具查看代码结构,动态分析则通过运行时监控观察程序行为。这项技术的价值在于帮助开发者学习优秀架构设计、优化技巧,同时协助安全研究者评估应用的数据安全和通信规范。在实际应用场景中,逆向工程常用于移动应用安全评估、协议分析和兼容性开发等领域。以某信息流App为例,使用Jadx进行静态代码分析可以定位网络请求和签名逻辑,而Frida动态插桩则能实时Hook关键函数,验证算法实现。

weixin_30521161的博客 358

开源 java android app 开发(五)文件和数据库存储

本文记录了作者从嵌入式软件开发转向Android应用开发的学习经历,重点介绍了在Android应用中使用Java进行数据存储的两种方法:SharedPreferences和SQLite3数据库。SharedPreferences用于存储简单的键值对数据,适合保存应用配置和用户偏好设置。SQLite3则是一个轻量级嵌入式数据库,适合处理更复杂的数据存储需求。文章详细展示了如何通过Java代码实现这两种存储方式的基本操作,包括数据的增删改查,并提供了完整的代码示例。通过这些内容,作者希望帮助其他开发者快速掌握A

ajassi2000的博客 584
上一篇: 【Android Studio学习】第一篇、制作一个拥有登录和注册功能的简易APP
下一篇: 【STM32训练—WiFi模块】第一篇、STM32驱动ESP8266WiFi模块获取网络时间
大屁桃
博客等级 码龄8年 2万+粉丝 54原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

大屁桃

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

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

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

打赏作者

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

抵扣说明:

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

余额充值