All Projects → ichtj → BaseIotUtils

ichtj / BaseIotUtils

Licence: other
🔥🔥串口工具,屏幕适配,通知工具类,多文件断点下载,xls,xlsx操作,文件处理,crash控制,音视频播放,usb设备检测,adb工具等...

Programming Languages

java
68154 projects - #9 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to BaseIotUtils

Socketify
Raw TCP and UDP Sockets API on Desktop Browsers
Stars: ✭ 67 (+52.27%)
Mutual labels:  socket, tcp-socket, udp-socket
Blynk Library
Blynk library for embedded hardware. Works with Arduino, ESP8266, Raspberry Pi, Intel Edison/Galileo, LinkIt ONE, Particle Core/Photon, Energia, ARM mbed, etc.
Stars: ✭ 3,305 (+7411.36%)
Mutual labels:  ota, serialport
Vutils
Vutils or Vic Utilities is an utility library written in Modern C++ and for Modern C++. It helps your programming go easier, faster, and simpler.
Stars: ✭ 16 (-63.64%)
Mutual labels:  socket, service
com2us cppNetStudy work
컴투스 C++ 네트워크 스터디 개인 작업 저장소
Stars: ✭ 32 (-27.27%)
Mutual labels:  socket, tcp-socket
Easyexcel
快速、简单避免OOM的java处理Excel工具
Stars: ✭ 22,133 (+50202.27%)
Mutual labels:  poi, jxl
Android Upload Service
Easily upload files (Multipart/Binary/FTP out of the box) in the background with progress notification. Support for persistent upload requests, customizations and custom plugins.
Stars: ✭ 2,593 (+5793.18%)
Mutual labels:  service, notification
Bus
Bus 是一个基础框架、服务套件,它基于Java8编写,参考、借鉴了大量已有框架、组件的设计,可以作为后端服务的开发基础中间件。代码简洁,架构清晰,非常适合学习使用。
Stars: ✭ 253 (+475%)
Mutual labels:  socket, poi
Pwa Cookbook
personally website
Stars: ✭ 107 (+143.18%)
Mutual labels:  service, notification
jetson-monitor
🚨 Jetson is an HTTP monitoring service used to notify by various messaging platforms such as Slack and Telegram
Stars: ✭ 45 (+2.27%)
Mutual labels:  service, notification
MusicPlayer
Android music player example.
Stars: ✭ 20 (-54.55%)
Mutual labels:  service, notification
ng2-STOMP-Over-WebSocket
STOMP Over WebSocket service for angular2
Stars: ✭ 35 (-20.45%)
Mutual labels:  socket, service
Oksocket
An blocking socket client for Android applications.
Stars: ✭ 2,359 (+5261.36%)
Mutual labels:  socket, tcp-socket
aioudp
Asyncio UDP server
Stars: ✭ 21 (-52.27%)
Mutual labels:  socket, udp-socket
EasyFileTransfer
An easy way to transfer file with any size on network with tcp protocol.
Stars: ✭ 30 (-31.82%)
Mutual labels:  socket, tcp-socket
PushMeBaby
iOS Push Notification Debug App. You can use this app during iOS Push Notification (development or production) to push notifications on your device from your Mac.
Stars: ✭ 47 (+6.82%)
Mutual labels:  service, notification
serialPort
Android通用的串口通信库
Stars: ✭ 39 (-11.36%)
Mutual labels:  serialport
harmony
Availability management backend and API for Sharetribe marketplaces
Stars: ✭ 18 (-59.09%)
Mutual labels:  service
Stone
A Swift framework for connecting to Phoenix Channels in your iOS app (with Presence support).
Stars: ✭ 18 (-59.09%)
Mutual labels:  socket
ota-server
OTA Server for both Android app and iOS app
Stars: ✭ 30 (-31.82%)
Mutual labels:  ota
Tiginx
Tiginx is a Shanzhai Nginx project , please buyao use it xian , if meet problem , I no fuze ...
Stars: ✭ 29 (-34.09%)
Mutual labels:  socket

注:项目中存在的多个Module已经进行模块转移,如需调用,请按以下方式调用

BaseFramework Framework API调用 点我

BaseKeepAlive Activity|Service保活 点我

BaseSocket Socket TCP|UDP 点我

接入方式

Android 项目根目录下文件 build.gradle 中添加

allprojects {
	repositories {
		...
		maven { url 'https://www.jitpack.io' }
	}
}

在App的build.gradle文件中添加

base_iotutils 物联基础工具类

dependencies {
         //多个物联网相关基础工具类
         implementation 'com.github.wave-chtj:BaseIotUtils:1.0.1'
}

自定义 Application

//每个Module library功能描述可在页面下方查看
//别忘了在 Manifest 中通过使用这个自定义的 Application,这里有各个library的初始化
public class App extends Application {

  @Override
  public void onCreate() {
    super.onCreate();
    //① base_iotutils 物联基础工具类
    BaseIotUtils
      .instance()
      .setBaseScreenParam(1080, 1920, true)
      .setCreenType(SCREEN_TYPE.WIDTH)
      .create(getApplication()); //按照宽度适配
  }

  @Override
  protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
  }
}

app 界面截图

image

base_iotutils 物联基础工具类说明

编号 工具类 工具名称 实现功能
1 ZipUtils 压缩相关 压缩解压,批量等
2 UriPathUtils Uri 转真实路径 android7.0uri 转换
3 ToastUtils 系统的 Toast 封装 成功,失败,警告等提示
4 TimeUtils 时间工具类 Date 时间日期转换
5 ISysDialog 应用上层弹窗 SYSTEM_ALERT_WINDOW
6 SPUtils 存储工具类 SharedPreferences 读写
7 ShellUtils adb 相关工具类 adb 命令执行
8 ServiceUtils Service 管理工具 启动,停止,判断存活等
9 PermissionsUtils 权限申请工具类 多权限申请
10 KLog 日志打印 日志标记打印
11 KeyBoardUtils 软键盘管理 打开,关闭
12 FileUtils 文件工具类 写入/读取文件相关信息
13 DeviceUtils 设备的相关信息 设备出厂自带参数
14 DataConvertUtils 进制转换工具类 10/16 进制,字节数组等相互转换
15 ScheduledTPoolUtils/TPoolUtils 线程池管理 线程重用
16 SerialPort/SerialPortFinder 串口相关工具类 打开,通讯,关闭
17 AdaptScreenUtils 屏幕适配 pt 单位适配
18 NotifyUtils notification 自定义 notification,动态调参
19 NetUtils 网络工具类 网络类型/状态等获取
20 NetListenerUtils 网络变化广播 网络变化回调
22 DownloadSupport 多任务下载管理 下载,暂停,状态回调
23 PlayUtils 音频管理 播放继续暂停
24 AppsUtils pp 的相关 查询应用以及 app 的信息
25 ScreenInfoUtils 屏幕相关 屏幕信息获取(高宽像素等)
26 StatusBarUtil 沉浸式状态栏 状态栏变色

base_iotutils 工具调用方式,及图片展示

FileUtils 文件操作 读写,删除,文件大小等

        //@filePath 文件路径 例如/sdcard/config.txt
        //@content 写入内容
        //@isCover 是否覆盖这个文件里的内容
        boolean writeResult = FileUtils.writeFileData(filePath, content, true);
        //读取filePath文件中的内容
        String readResult = FileUtils.readFileData(filePath);
        //更多文件操作方法请查询FileUtils中的内容

KeyBoardUtils 软键盘管理

       //打卡软键盘
       KeyBoardUtils.openKeybord(editeTextView);

       //关闭软键盘
       KeyBoardUtils.closeKeybord(editeTextView);

NetUtils 网络工具类

        //得到网络类型 NETWORK_NO,NETWORK_WI,NETWORK_2G,NETWORK_3G,NETWORK_4G,NETWORK_UN,NETWORK_ETH
        NetUtils.getNetWorkType();
        //得到网络类型字符串
        NetUtils.getNetWorkTypeName();
        //判断网络连接是否可用
        NetUtils.isNetworkAvailable();
        //判断网络是否可用
        NetUtils.isAvailable();
        //判断网络是否连接
        NetUtils.isConnected();
        //判断是否有外网连接(普通方法不能判断外网的网络是否连接,比如连接上局域网)不要在主线程使用,会阻塞线程
        NetUtils.ping();  NetUtils.ping(int count,int time); NetUtils.ping(String ip);
        //判断WIFI是否打开
        NetUtils.isWifiEnabled();
        //判断网络连接方式是否为WIFI
        NetUtils.isWifi();
        //判断网络连接方式是否为ETH
        NetUtils.isEth();
        //判断wifi是否连接状态
        NetUtils.isWifiConnected();
        //判断是否为3G网络
        NetUtils.is3rd();
        //判断网络是否是4G
        NetUtils.is4G();
        //GPS是否打开
        NetUtils.isGpsEnabled();
        //打开网络设置界面
        NetUtils.openWirelessSettings();
        //获取活动网络信息
        NetUtils.getActiveNetworkInfo();
        //获取移动网络运营商名称 如中国联通、中国移动、中国电信
        NetUtils.getNetworkOperatorName();
        //获取移动终端类型 0 手机制式未知 1 手机制式为GSM,移动和联通 2 手机制式为CDMA,电信 3
        NetUtils.getPhoneType();

DownloadSupport 多任务下载 任务各自独立

image

        //①初始化下载工具类
        DownloadSupport downloadSupport=new DownloadSupport();

        //---------------------------任务1--------------------------------
        FileCacheData fileCacheData = new FileCacheData();
        fileCacheData.setUrl(downloadUrl);
        fileCacheData.setFileName(fileName1);
        fileCacheData.setRequestTag(downloadUrl);
        fileCacheData.setFilePath("/sdcard/" + fileName1);

        //---------------------------任务2--------------------------------
        FileCacheData fileCacheData2 = new FileCacheData();
        fileCacheData2.setUrl(downloadUrl2);
        fileCacheData2.setFileName(fileName2);
        fileCacheData2.setRequestTag(downloadUrl2);
        fileCacheData2.setFilePath("/sdcard/" + fileName2);



        //开启任务下载 下载文件信息1
        downloadSupport.addStartTask(fileCacheData, downloadCallBack);
         //开启任务下载 下载文件信息2
        downloadSupport.addStartTask(fileCacheData2, downloadCallBack);
        //-----------------------------------------------------------

        //下载进度
        //多个任务使用同一个DownloadCallBack 可根据设置的requestTag来区分属于哪个下载进度 fileCacheData.getRequestTag()
        DownloadSupport.DownloadCallBack downloadCallBack = new DownloadSupport.DownloadCallBack() {
            @Override
            public void download(FileCacheData fileCacheData, int percent, boolean isComplete) {
                Message message1 = handler.obtainMessage();
                message1.obj = fileCacheData;
                message1.arg1 = percent;
                handler.sendMessage(message1);
            }

            @Override
            public void error(Exception e) {
                KLog.d(TAG, "error:>errMeg=" + e.getMessage());
            }

            @Override
            public void downloadStatus(String requestTag, DownloadStatus downloadStatus) {
                KLog.d(TAG, "downloadStatus:>requestTag =" + requestTag + ",status=" + downloadStatus.name());
            }
        };

        //暂停所有任务
        downloadSupport.pause();
        //暂停单个任务
        downloadSupport.pause(fileCacheData2.getRequestTag());

        //全部关闭
        downloadSupport.cancel();

NotificationUtils 通知栏通知工具类使用

     //获取系统中是否已经通过 允许通知的权限
     if (NotifyUtils.notifyIsEnable()) {
         NotifyUtils.getInstance("xxid")
                 .setEnableCloseButton(false)//设置是否显示关闭按钮
                 .setOnNotifyLinstener(new OnNotifyLinstener() {
                     @Override
                     public void enableStatus(boolean isEnable) {
                         KLog.e(TAG, "isEnable=" + isEnable);
                     }
                 })
                 .setNotifyParam(R.drawable.ic_launcher, R.drawable.app_img
                         , "BaseIotUtils"
                         , "工具类"
                         , "文件压缩,文件下载,日志管理,时间管理,网络判断。。。"
                         , "this is a library ..."
                         , "2020-3-18"
                         , false
                         , true)
                 .exeuNotify();
     } else {
         //去开启通知
         NotifyUtils.toOpenNotify();
     }
     //更改部分内容
     NotifyUtils.getInstance("xxid").setAppName("");
     NotifyUtils.getInstance("xxid").setAppAbout("");
     NotifyUtils.getInstance("xxid").setRemarks("");
     NotifyUtils.getInstance("xxid").setPrompt("");
     NotifyUtils.getInstance("xxid").setDataTime("");
     //关闭此notification
     NotifyUtils.closeNotify();

PlayUtils 音频播放

      //开始播放
      PlayUtils.getInstance().
         setPlayStateChangeListener(new PlayUtils.PlayStateChangeListener() {

             @Override
             public void onPlayStateChange(PlayUtils.PLAY_STATUS play_status) {
                 //获取当前状态PLAY, RESUME, PAUSE, STOP, NONE
                 KLog.d(TAG," play_status= "+play_status.name());
             }

             @Override
             public void getProgress(int sumProgress, int nowProgress) {
                 //sumProgress 总时长  nowProgress 当前时长
                 KLog.d(TAG, " sumProgress= " + sumProgress + ",nowProgress= " + nowProgress);
             }

         }).
         startPlaying("/sdcard/ding.wav");//文件地址

      //暂停播放
      PlayUtils.getInstance().pausePlay();

      //继续播放
      PlayUtils.getInstance().resumePlay();

      //停止播放
      PlayUtils.getInstance().stopPlaying();

NetListenerUtils 网络监听者

     //注册广播
     NetListenerUtils.getInstance().registerReceiver();
     //设置监听 NetTypeInfo (NETWORK_2G,NETWORK_3G,NETWORK_4G,NETWORK_WIFI,NETWORK_ETH,NETWORK_NO,NETWORK_UNKNOWN)
     NetListenerUtils.getInstance().setOnNetChangeLinstener(new OnNetChangeLinstener() {
         @Override
         public void changed(NetTypeInfo type, boolean isNormal) {
             //isNormal 网络经过ping后 true为网络正常 false为网络异常
             KLog.e(TAG, "network type=" + type.name() + ",isNormal=" + isNormal);
             tvType.setText("" + type.name());
             tvStatus.setText("" + isNormal);
         }
     });
     .......
     //注销广播
     NetListenerUtils.getInstance().unRegisterReceiver();

SerialPort|SerialPortFinder 串口封装类

        //获得串口地址
        SerialPortFinder mSerialPortFinder = new SerialPortFinder();
        String[] entryValues = mSerialPortFinder.getAllDevicesPath();
        //根据串口地址和波特率开启串口
        SerialPort port =  null;
        int baudrate=9600;//波特率 请自行选择所需波特率
        try{
            //entryValues[xxx] 中保存了一些串口地址 请自行选择
            port=new SerialPort(new File(entryValues[xxx]), baudrate,0);
            Log.e(TAG,"开启成功");
        }catch(Exception e){
            e.printStackTrace();
            Log.e(TAG,"errMeg:"+e.getMessage());
        }

        //写命令
        port.write(command);
        //读命令
        //可根据SerialPortHelper中的readInputStreamData(int flag)方法读取数据,这里是一个一个字节读取
        //亦或用port中的read方法一次读取,如果数据量大可能存在粘包
        port.read(byte[] buff,int lenght);
        //关闭串口
        port.close();

ShellUtils adb 操作工具类

使用方式

        //单条命令执行
        ShellUtils.CommandResult commResult=ShellUtils.execCommand("reboot",true);
        //多条命令执行
        //ShellUtils.CommandResult commResult2=ShellUtils.execCommand(new String[]{"comm1","comm2","comm3","commN..."},true);
        if(commResult.result==0){
            Log.e(TAG, "commResult2 exeu successful");
        }else{
            Log.e(TAG, "commResult exeu faild errMeg="+commResult.errorMsg);
        }

AppsUtils 工具类

使用方式

        AppsUtils.getSystemAppList();//查询手机内系统应用
        AppsUtils.getDeskTopAppList();//查询桌面所有应用
        AppsUtils.getNormalAppList();//查询手机内非系统应用
        AppsUtils.getMainIntent();//获取某个应用的主界面
        AppsUtils.isAppRunning();//根据包名获取APP是否正在运行
        AppsUtils.startApp();//根据包名获取启动该app的主界面
        AppsUtils.getAppName();//获取当前应用名称
        AppsUtils.getPidByPackageName();//根据包名获取进程PID
        AppsUtils.getAppVersionCode();//获取APP-VersionCode
        AppsUtils.getAppVersionName();//获取APP-VersionName
        AppsUtils.isAppForeground();//判断 App 是否处于前台

PermissionsUtils 权限申请工具类

使用方式

        PermissionsUtils.with(mContext).
            addPermission(Manifest.permission.ACCESS_FINE_LOCATION).
            addPermission(Manifest.permission.ACCESS_COARSE_LOCATION).
            addPermission(Manifest.permission......).
            initPermission();

Version Code

v1.1.0

> 本机信息展示(网络,设备空间等)
> 下载工具类 DownloadSupport参数传递更方便,可自行定义每个下载任务的信息
> 系统API调用,例如网络相关,空间相关等

v1.0.9

> 跨进程保活 Service/Activity
> 优化部分工具类使用

v1.0.8

> 新增了 PlayUitls 音频播放器(状态管理)
> DwonloadSupport(全新的多任务下载管理工具类)
> 视频播放管理收集
> 删除了服务保活工具,删除了原始的下载工具类
> 添加了对该系统内的应用的管理,查看 PackagesUtils
> 优化该 app 界面,使用操作等
> 定时器功能添加 倒计时,计时器等
> 收集 greenDAO(收集整合,方便后期使用),封装(Sqlite)操作更加方便

v1.0.3

> 优化各个工具类
> 新增部分工具类
> 添加启动应用时的优化处理

v1.0.2

> 项目优化
> 基本工具类的收集整合
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].