Android
文章平均质量分 67
睿里睿气
全栈工程师
展开
-
Android连载46-wpa_supplicant中的P2P(1)
后记:毕业已经五年有余,脱离了语数外物理化很多年,如果现在再让我拿起这些东西,可能读起来用晦涩难懂来形容一点不为过,反而研读历史、地理、政治、金融、法律一些书籍更为得心应手或者说孜孜不倦,这就是所谓兴趣驱动吧,不把它作为任务反而更有动力,但是一旦作为考核的对象,也许就兴趣大减。原创 2023-07-27 00:01:50 · 553 阅读 · 0 评论 -
Android连载45-WifiService和P2P详解
包含两个阶段:GO negotiation: 协商谁来做GOProvisioning: 借助WSC来交换安全配置信息,此后,GC就可以利用安全信息配置来关联GO协商过程会利用一种名为P2p Public Action类型的帧来交换信息协商的过程,经历三次帧交换,他们之间交换的报文,无需了解,知道了也会忘,知道个过程即可,如果要搞这种,再去详细了解网上偷来的图,三次帧交换的过程,协商。原创 2023-07-23 17:16:30 · 538 阅读 · 0 评论 -
Android连载44-WPA_Supplicant相关学习
这是一个开源项目,实现了Station对无线网络进行管理和控制的功能。原创 2023-02-18 18:45:47 · 748 阅读 · 0 评论 -
Android连载43-网络管理相关分析
一、常用adb命令// 用于查询网络状态以及网络连接等相关日志adb shell dumpsys connectivity例如:下面是查询我的huawei P20的详情NetworkFactories for: UntrustedWifiNetworkFactory Ethernet TelephonyNetworkFactory[1] WifiNetworkFactory TelephonyNetworkFactory[0] PhoneSwitcherNetworkRequstListener P原创 2022-12-11 16:19:39 · 404 阅读 · 0 评论 -
Android连载43-Netd相关学习笔记
手动阀原创 2022-10-28 23:20:20 · 616 阅读 · 0 评论 -
Android连载42-复习自定义控件
继承关系所有的控件都直接或者间接继承自ViewView是Android中的一种基本的UI组件,可以在屏幕上绘制一块矩形区域ViewGroup则是一种特殊的View,它可以包含许多的子View和子ViewGroup,是一个用于放置控件和布局的容器....原创 2021-08-12 00:11:29 · 78 阅读 · 0 评论 -
Android连载41-复习四种基本布局
详解四种基本布局LinearLayout线性布局android:orientation=vertical 垂直排列horizontal 水平排列android:layout_gravity= 用于指定文字在控件中的对齐方式topcenter_verticalbottom注意若orientation是horizontal,那么控件只能是垂直方向上的对齐若orientation是vertical,那么控件只能是水平方向上的对齐android:layout_we原创 2021-08-03 00:40:30 · 92 阅读 · 0 评论 -
Android连载40-ITelecomService详解
一、拨号流程总结DialpadFragment提供用户拨号的交互界面CallIntentBuilder创建拨号请求的intent对象TelecomManager继续传递拨号请求intent对象二、ITelecomService接收拨号请求服务/packages/services/Telecomm/src/com/android/server/telecom这个代码库编译出来就是Telecom.apk Android应用程序,后面统一称为Telecom应用 <serv原创 2021-04-29 00:37:55 · 514 阅读 · 0 评论 -
Android连载39-简析HAL、拨号盘
一、简析HAL结构HAL是一个位于操作系统和驱动程序之上,运行在用户空间中的服务程序。目的:对上层应用提供一个统一的查询硬件设备的接口。好处:简化了应用程序查询硬件的逻辑注意:HAL所谓的抽象不提供对硬件的实际操作,对硬件的操作仍然由具体的驱动程序来完成。1.android为什么引入HAL由于安卓是基于Linux内核进行开发,而linux内核使用GPL许可证,这就要求,使用到这个许可证的软件,对开源软件的任何修改扩充都必须开源,如果引入了HAL,就可以让android系统层和内核靠HAL隔原创 2021-04-27 00:18:25 · 354 阅读 · 0 评论 -
Android连载38-访问联系人
一、读取手机中的联系人由于使用模拟器,我们首先创建几个联系人再进行读取然后创建一个项目ContactsTest,修改activity_main.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" andr原创 2020-10-15 00:29:58 · 158 阅读 · 0 评论 -
Android连载37-跨程序共享数据
一、内容提供器使用内容提供器来共享数据可以精确的进行控制,哪些数据可以共享,哪些数据不可以共享内容提供器有两种用法:(1)使用现有的内容提供器来读取和操作相应程序中的数据;(2)创建自己的内容提供器给我们的程序的数据提供外部访问接口二、ContentResolver的基本用法获取ContentResolver实例的方法: new Context().getContentResolver()该实例提供了一系列方法insert(),update(),delete(),query()用于CRUD原创 2020-10-09 00:31:17 · 113 阅读 · 0 评论 -
Android连载36-查询数据、使用原生SQL以及事务的使用
一、查询数据android的查询数据库操作很复杂,SQLiteDatabase使用了query方法来进行查找数据,内含很多参数,我们来看一下query()方法参数对应SQL部分描述tablefrom table_name表名columsselect colum1,colum2要查询的列名selectionwhere column = value约束条件selectionArgs-为where中的占位符提供具体的值groupBygroup原创 2020-09-29 00:20:47 · 264 阅读 · 0 评论 -
Android连载35-使用SQLiteDatabase自带增删改功能
一、添加数据SQLiteDatabase中提供了insert方法,内含有三个参数,一个是表名,第二个是在未指定添加数据的情况下给某些可为空的列自动赋值NULL,第三个参数是一个CotentValues对象,它提供了一系列put方法重载,用于向ContentValues中添加数据。修改activity_main.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"..............省略原创 2020-09-25 00:18:07 · 405 阅读 · 0 评论 -
Android连载34-更新数据库以及使用SDK自带adb工具
二、源码:DatabaseTest地址:https://github.com/ruigege66/Android/tree/master/DatabaseTestCSDN:https://blog.csdn.net/weixin_44630050博客园:https://www.cnblogs.com/ruigege0000/欢迎关注微信公众号:傅里叶变换,个人账号,仅用于技术交流...原创 2020-09-21 00:18:45 · 174 阅读 · 0 评论 -
Android连载33-在android内创建SQLite数据库
一、创建SQLite数据库在android内部SQLiteOpenHelper类介绍:抽象类,内含两个抽象方法:onCreate()和onUpgrade(),还有两个实例方法:getReadableDatabase()和getWritableDatabase()这两个实例方法都可以创建或者打开一个现有的数据库(如果数据库已经存在那么直接打开,否则会先创建一个新的数据库),并且返回一个可以对数据库进行读写操作的对象。不同的是,当数据库不可以写入的时候(如磁盘空间已经满了)getReadableDat原创 2020-09-17 00:14:14 · 300 阅读 · 0 评论 -
Android连载32-实现登录密码存储功能
一、实现记住密码功能利用上一节的内容,我们来实现一个记住密码的功能,我们直接修改BroadcastBestPractice项目中的代码。首先修改login.xm中的代码<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android原创 2020-09-12 23:27:38 · 154 阅读 · 0 评论 -
Android连载17-使用SharedPreference来保存以及读取数据
一、获取SharedPreference对象的三种方式:第一种方式上次已经连载了,本次不再赘述第二种方式:使用Activity中的getPreference()方法这个方法和Context中的呢getSharedPrerences()方法很相似,不过它只接受一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为SharedPreference的文件名。第三种方式:使用PreferenceManager类中的getDefaultSharedPreference()方法这是一个静态方原创 2020-08-31 00:21:23 · 943 阅读 · 0 评论 -
Android连载30-SharedPreference存储
一、读取文件1.读取文件我们的APP在重新启动程序的时候EditText能够从系统中获取数据,修改MainActivity中的代码public class MainActivity extends Activity { private EditText edit; @Override protected void onCreate(Bundle savedInstanceState) { ........................... String inputT原创 2020-08-24 00:14:18 · 151 阅读 · 0 评论 -
Android连载29-持久化技术
一、持久化技术我们平时所使用的APP产生的数据,在内存中都是瞬时的,会随着断电、关机等丢失数据,因此android系统采用了持久化技术,用于存储这些“瞬时”数据持久化技术包括:文件存储、SharedPreference存储以及数据库存储,还有更复杂的SD卡内存储。二、文件存储最基本存储方式,不对存储内容进行格式化处理,适用于存储简单文本或者二进制数据,若存储一些复杂数据,那么需要定义格式规范,方便后续解析出来。Context类提供了openFileOutput方法用于将数据存储到文件中。该原创 2020-08-13 00:07:37 · 250 阅读 · 0 评论 -
Android连载28-复习以往内容(六)
一、 体验生命周期xml中TextView用于显示一行文字加载布局的函数setContentView()代码requestWindowFeature(Window.FEATURE_NO_TITLE)用于将活动的标题隐藏。建立layout.xml,然后注册到一个新建的活动类中,最后还得把活动类在AndroidManifest.xml注册一下<activity android:name=".NormalActivity"></activity><activity原创 2020-07-29 00:08:31 · 109 阅读 · 0 评论 -
Android连载27-复习以往内容(五)
一、隐士intent,紧接着上一次复习得到第二个活动返回的数据之后,我们需要重写onActivityResult()来获取数据 protected void onActivityResult(int requestCode,int resultCode,Intent data){ switch(requestCode){ case 1: if(resultCode == RESULT_OK){ string returnedData = data.get原创 2020-07-24 00:11:59 · 73 阅读 · 0 评论 -
Android连载26-注册所有活动以及展示成果
一、紧接连载25的内容解释ForceOfflineReceiver类使用AlertDialog.Builder来构建一个对话框,注意里面有一个成员方法setCancelabel()将设置为不可以取消,否则一点击Back键,又可以使用程序了,这就是导致了两地登录,是不符合我们的规定的。使用setPositiveButton()方法来给对话框注册确定按钮,当用户点击了确定按钮就会调用ActivityyCollector的finishAll()方法销毁所有的活动,并且重新启动登录页面这个活动。广播接收器原创 2020-07-20 00:13:17 · 110 阅读 · 0 评论 -
Android连载25-强制下线具体实现
一、回顾上次连载写了两个类,一个类ActivityCollector.java用于管理所有的活动;一个类是BaseActivity.java作为所有活动的父类;还有一个放在layout目录中的登录界面login.xml二、登录页面的活动接下来写一个登录页面的活动,继承自BaseActivity.javapackage com.example.broadcastbestpractice;import android.content.Intent;import android.os.Bu原创 2020-07-15 00:23:41 · 185 阅读 · 0 评论 -
Android连载24-本地广播和强制下线功能
一、使用本地广播1.本地广播一个举例package com.example.broadcasttest2;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.net.Connectiv原创 2020-07-11 19:01:28 · 167 阅读 · 0 评论 -
Android连载23-跨程序广播、有序广播
一、跨程序发送广播广播是一种可以跨进程的通信方式;我们来写一个发送有序广播的项目首先先建立一个BroadcastTest3项目然后写一个接收广播的类,继承自BroadcastReceiverpackage com.example.broadcasttest3;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import andro原创 2020-07-07 00:24:13 · 231 阅读 · 0 评论 -
Android连载22-自定义广播之标准广播发送
一、发送自定义广播1.广播主要分为两种:标准广播和有序广播2.发送标准广播先定义一个广播接收器来接收广播package com.example.broadcasttest2;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.widget.Toast;public class MyBroadcas原创 2020-07-03 00:20:04 · 208 阅读 · 0 评论 -
Android连载21-复习以往内容(四)
一、隐式Intent1.如何配置AndroidManifest.xml配置intent-filter内容响应actioncom.example.activitytest.ACTION_START并且响应category才可以在FirstActivity.java中进行设置Intent.每个Intent只能指定一个action,但是可以指定多个category(1)Intent构造函数,有Intent(String action_name)(2)还用成员方法addCategory(Stri原创 2020-06-29 00:34:28 · 94 阅读 · 0 评论 -
Android连载20-静态注册实现开机启动
一、静态注册实现开机启动1.在之前的连载中,我们编写的是动态注册,用到了内部类等。动态注册只能在程序启动之后才能生效。接下来我们将要使用静态注册的方式进行注册。(可以举例开机启动项)package com.example.broadcasttest2;import android.content.BroadcastReceiver;import android.widget.Toast;public class BootCompleteReceiver extends BroadcastRec原创 2020-06-25 13:24:55 · 381 阅读 · 0 评论 -
Android连载19-广播机制之网络状态显示
一、我们创建一个新的android项目来进行演示广播机制中是如何显示网络状态的。package com.example.broadcasttest2;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import a原创 2020-06-21 00:31:25 · 163 阅读 · 0 评论 -
Android连载18-广播机制
一、网络通信原理基础知识1.在一个IP网络范围内最大的IP地址是被保留作为广播地址来使用的。比如:某个网络的IP范围为192.168.0.XXX,子网掩码为255.255.255.0,那么这个网络的广播地址为192.168.0.255。广播数据包会发送到同一网络上的所有端口,这样在网络中的每台主机都会收到这条广播。2.andorid中的广播机制更加灵活,因为每一个应用程序都可以自己定制自己关心的广播内容。3.andorid中的广播机制分为两种:标准广播和有序广播(1)标准广播:是一种完全异步执行的原创 2020-06-17 00:26:32 · 118 阅读 · 0 评论 -
Android连载17-复习以往内容(三)
一、findViewById函数和Toast类(1)Button button1 = (Button) findViewById(R.id.button_1);通过findViewById方法,去布局中找出R.id.button_1名称的Button按钮,这个方法会返回一个View对象,然后进行向下类型转换。(2)Toast.makeText(FirstActivity.this,“You clicked Button 1”,Toast.LENGTH_SHORT).show()Toast.makeT原创 2020-06-13 00:26:18 · 127 阅读 · 0 评论 -
Android连载16-复习以往内容(二)
一、活动里的方法(1)onCreate方法在活动创建之后必定执行的方法。(2)Andorid程序讲究逻辑和视图相分离;(3)setContentView()静态方法,用于引入视图;(4)Android程序不推荐在程序中对字符串进行硬编码,最好的做法就是一般把字符串定义到res/values/string.xml中,我们可以看到AndroidManifest.xml文件中对于app名称的名字二、详解res文件夹里的内容1.drawable开头的文件夹都是用来放图片的,更多的时候美工可能只会提原创 2020-06-09 00:17:01 · 146 阅读 · 0 评论 -
Android连载15-复习以往内容(一)
一、复习总结内容:android的起源、架构、分层android开发环境安装android开发目录内容介绍二、1.Android是基于Linux开发的。2.Android分为四层架构、五块区域四层架构:(1)Linux内核层;(提供了各种驱动等)(2)系统运行层;(各种库,C/C++库提供特性,SQLlite提供数据库,OpenGL|ES库提供3D绘图支持,Webkit提供浏览器内核等)(3)应用框架层;(4)应用层(所有安装在手机上的应用程序都是属于这一层)3.Android四大组件:(1原创 2020-06-03 00:16:40 · 87 阅读 · 0 评论 -
Android连载14-适应不同分辨率而编写碎片
一、编辑布局1.分别来写两个布局:一个用于平板等大屏幕分辨率的,一个用于手机等小屏幕分辨率的,先写小的,地址:layout/activity_main.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <f原创 2020-05-28 23:52:40 · 126 阅读 · 0 评论 -
Android连载13-创建启动活动类
根据碎片的生命周期,我们知道onAttach()方法首先会被执行,因此在这里做一些数据初始化的操作,比如调用getNews()方法获取几条模拟的新闻数据,以及完成NewsAdapter的创建,然后在onCreateView()方法中加载了news_title_frag布局,并给新闻列表的ListView注册了点击实践,接下来在onActivityCreated()方法中,我们通过是否能够找到一个id为news_content_layout的View只在双页模式中才会出现,在稍后的布局中将会看到。然后在Lis原创 2020-05-25 00:18:33 · 138 阅读 · 0 评论 -
Android连载12-完善新闻app内容区域
1.这里编写一个类用于开启活动,首先在onCreateView()方法中加载了我们刚刚创建的news_content_frag布局,这个没什么好解释的,接下来又提供了一个refresh()方法,这个方法就是用于将新闻的标题和内容显示在界面上的。可以看到,这里通过findViewById()方法分别获取到新闻的标题和内容控件,然后将方法传递进来的参数设置进去。package com.example.fragmentbestpractice;import android.app.Fragment;imp原创 2020-05-21 00:14:01 · 125 阅读 · 0 评论 -
Android连载11-新闻app优秀实践
一、使用碎片来进行一个最佳实践,即我们写一个新闻的app1.首先先建立一个新闻类package com.example.fragmentbestpractice;public class News { private String title; private String content; public String getTitle() { return title; } public void setTitle(String title) {原创 2020-05-17 00:19:44 · 216 阅读 · 0 评论 -
Android连载10-动态添加页面、创建一个新闻app
一、动态规划界面的大小1.我们在res的文件夹里面创建一个新的文件夹large_fragment用来,然后写一个界面,activity_main.xml文件,用于存储平板电脑等一些分辨率高的界面。也就是说小屏幕使用正常activity_main文件、大屏幕就使用large_fragment文件夹里面的界面。<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://原创 2020-05-13 00:19:48 · 275 阅读 · 0 评论 -
Android连载9-碎片的生命周期
一、碎片的状态和1.运行状态当一个碎片是可见的,并且她所关联的活动正处于运行状态,该碎片就是运行状态。2.暂停状态当一个活动那个进入暂停状态(由于另一个未占满屏幕的活动被添加到栈顶),与它相关联的可见碎片进入到暂停状态。3.停止状态当一个活动进入到停止状态的时候,与它相关联的碎片就会进入到停止状态。或者通过调用FragmentTransaction的remove()、replace()方法将碎片从活动中移除,但有在事务提交之前调用addToBackStack()方法,这时的碎片也就会进入到停止状原创 2020-05-09 00:20:10 · 160 阅读 · 0 评论 -
Android连载8-动态的添加碎片
一、动态添加碎片<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="mat...原创 2020-04-30 00:29:15 · 348 阅读 · 1 评论