android 全面获取系统状态

Android 系统属性读取和设置详解 阅读详情

最近项目需要一个一键获取系统状态的功能,这里我写了一个demon简单的介绍一下如何获取系统的电量、手机的网络状况(包括2G、3G、4G)、蓝牙的开关情况等共功能。具体的各个代码的功能我就不详细的讲解ovo。。 因为大部分我都做了注释。好了我就不废话了直接上代码:

首先就是大家关注的实现部分:



  

</pre><pre name="code" class="html">public class MainActivity extends Activity implements View.OnClickListener {
    private WifiManager mWifiManager;
    private LocationManager mLocationManager;
    //判断gps的状态
    private boolean isGpsOpen;
    private boolean isBatteryOpen;
    private boolean isGsmOpen;
    private Button bt_gps, bt_battery, bt_conn, bt_gsm, bt_bluetooth;
    private BatteryReceiver batteryReceiver;
    private IntentFilter intentFilter;
    private BluetoothAdapter mBluetoothAdapter;
    private TelephonyManager Tel;
    private MyPhoneStateListener MyListener;
    private ConnectionChangeReceiver myReceiver;
    private boolean isConnect;
    public static final String SIGNAL_STRENGTH_NONE_OR_UNKNOWN = "无信号";
    public static final String SIGNAL_STRENGTH_POOR = "信号差";
    public static final String SIGNAL_STRENGTH_MODERATE = "中等的";
    public static final String SIGNAL_STRENGTH_GOOD = "信号比较好";
    public static final String SIGNAL_STRENGTH_GREAT = "信号非常好";
    /**
     * Network type is unknown
     */
    public static final int NETWORK_TYPE_UNKNOWN = 0;
    /**
     * Current network is GPRS
     */
    public static final int NETWORK_TYPE_GPRS = 1;
    /**
     * Current network is EDGE
     */
    public static final int NETWORK_TYPE_EDGE = 2;
    /**
     * Current network is UMTS
     */
    public static final int NETWORK_TYPE_UMTS = 3;
    /**
     * Current network is CDMA: Either IS95A or IS95B
     */
    public static final int NETWORK_TYPE_CDMA = 4;
    /**
     * Current network is EVDO revision 0
     */
    public static final int NETWORK_TYPE_EVDO_0 = 5;
    /**
     * Current network is EVDO revision A
     */
    public static final int NETWORK_TYPE_EVDO_A = 6;
    /**
     * Current network is 1xRTT
     */
    public static final int NETWORK_TYPE_1xRTT = 7;
    /**
     * Current network is HSDPA
     */
    public static final int NETWORK_TYPE_HSDPA = 8;
    /**
     * Current network is HSUPA
     */
    public static final int NETWORK_TYPE_HSUPA = 9;
    /**
     * Current network is HSPA
     */
    public static final int NETWORK_TYPE_HSPA = 10;
    /**
     * Current network is iDen
     */
    public static final int NETWORK_TYPE_IDEN = 11;
    /**
     * Current network is EVDO revision B
     */
    public static final int NETWORK_TYPE_EVDO_B = 12;
    /**
     * Current network is LTE
     */
    public static final int NETWORK_TYPE_LTE = 13;
    /**
     * Current network is eHRPD
     */
    public static final int NETWORK_TYPE_EHRPD = 14;
    /**
     * Current network is HSPA+
     */
    public static final int NETWORK_TYPE_HSPAP = 15;
    /**
     * Current network is GSM
     */
    public static final int NETWORK_TYPE_GSM = 16;


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

    /**
     * 初始化对象
     */
    private void init() {
        bt_gps = (Button) findViewById(R.id.bt_gps);
        bt_battery = (Button) findViewById(R.id.bt_battery);
        bt_conn = (Button) findViewById(R.id.bt_conn);
        bt_gsm = (Button) findViewById(R.id.bt_gsm);
        bt_bluetooth = (Button) findViewById(R.id.bt_bluetooth);
        batteryReceiver = new BatteryReceiver();
        //注册广播接受者监听系统电池变化
        intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        /* Update the listener, and start it */
        MyListener = new MyPhoneStateListener();
        Tel = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    }

    /**
     * 初始化事件
     */
    private void initEvent() {

        bt_gps.setOnClickListener(this);
        bt_battery.setOnClickListener(this);
        bt_conn.setOnClickListener(this);
        bt_gsm.setOnClickListener(this);
        bt_bluetooth.setOnClickListener(this);
        registerReceiver();
    }
    /**
     * Called when a view has been clicked.
     *
     * @param v The view that was clicked.
     */
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.bt_battery:
                batteryState();
                break;
            case R.id.bt_conn:
                Toast.makeText(this, netWorkState(), Toast.LENGTH_LONG).show();
                break;
            case R.id.bt_gps:
                Toast.makeText(this, gpsState(), Toast.LENGTH_LONG).show();
                break;
            case R.id.bt_gsm:
                isGsmOpen = true;
                Tel.listen(MyListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
                break;
            case R.id.bt_bluetooth:
                Toast.makeText(this, blueToothState(), Toast.LENGTH_LONG).show();
                break;
        }
    }

    /**
     * 注册广播得到系统电量的值
     */
    private void batteryState() {

        isBatteryOpen = true;
        //注册receiver
        registerReceiver(batteryReceiver, intentFilter);


    }

    /**
     * 返回gps的状态
     */
    private String gpsState() {
        String gpsState = "gps已关闭";
        if (mLocationManager != null) {
            isGpsOpen = mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
            if (isGpsOpen) {
                gpsState = "gps已打开";
            } else {
                gpsState = "gps已关闭";
            }
        }
        return gpsState;
    }

    /**
     * @return 返回wife连接状态
     */
    private boolean isWifiOpen() {
        boolean isWifiOpen = mWifiManager.isWifiEnabled();
        return isWifiOpen;
    }

    /**
     * 判断网络状况
     *
     * @return
     */
    private String netWorkState() {
        String netWorkState = "未知网络";
        if (!isConnect) {
            return netWorkState = "当前无网络";
        } else if (isWifiOpen()) {
            return netWorkState = "无线网络已打开";
        } else {
            switch (Tel.getNetworkType()) {
                case NETWORK_TYPE_GPRS:
                case NETWORK_TYPE_GSM:
                case NETWORK_TYPE_EDGE:
                case NETWORK_TYPE_CDMA:
                case NETWORK_TYPE_1xRTT:
                case NETWORK_TYPE_IDEN:
                    return netWorkState = "当前2g网络";
                case NETWORK_TYPE_UMTS:
                case NETWORK_TYPE_EVDO_0:
                case NETWORK_TYPE_EVDO_A:
                case NETWORK_TYPE_HSDPA:
                case NETWORK_TYPE_HSUPA:
                case NETWORK_TYPE_HSPA:
                case NETWORK_TYPE_EVDO_B:
                case NETWORK_TYPE_EHRPD:
                case NETWORK_TYPE_HSPAP:
                    return netWorkState = "当前3g网络";
                case NETWORK_TYPE_LTE:
                    return netWorkState = "当前4g网络";
                default:
                    return netWorkState;
            }
        }


    }

    /**
     * 判断蓝牙服务
     *
     * @return
     */
    private String blueToothState() {
        String blueToothState = "蓝牙已关闭";
        if (mBluetoothAdapter != null) {
            boolean isBlueOpen = mBluetoothAdapter.isEnabled();
            if (isBlueOpen) {
                blueToothState = "蓝牙已打开";
            } else {
                blueToothState = "蓝牙已关闭";
            }
        }

        return blueToothState;
    }

    /**
     * 广播监听电量变化
     */
    class BatteryReceiver extends BroadcastReceiver {

        //判断它是否是为电量变化的Broadcast Action
        @Override
        public void onReceive(Context context, Intent intent) {
            if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction()) && isBatteryOpen) {
                //获取当前电量
                int level = intent.getIntExtra("level", 0);
                //电量的总刻度
                int scale = intent.getIntExtra("scale", 100);
                //把它转成百分比
                Toast.makeText(context, "电池电量为" + ((level * 100) / scale) + "%", Toast.LENGTH_LONG).show();
                isBatteryOpen = false;
            }
        }
    }

    /* 开始PhoneState听众 */
    private class MyPhoneStateListener extends PhoneStateListener {
        /* 从得到的信号强度,每个tiome供应商有更新 */
        @Override
        public void onSignalStrengthsChanged(SignalStrength signalStrength) {
            super.onSignalStrengthsChanged(signalStrength);
            String level;

            if (isGsmOpen) {
                int asu = signalStrength.getGsmSignalStrength();
                if (asu <= 2 || asu == 99) level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
                else if (asu >= 12) level = SIGNAL_STRENGTH_GREAT;
                else if (asu >= 8) level = SIGNAL_STRENGTH_GOOD;
                else if (asu >= 5) level = SIGNAL_STRENGTH_MODERATE;
                else level = SIGNAL_STRENGTH_POOR;
                Toast.makeText(getApplicationContext(),
                        "当前"
                                + level,
                        Toast.LENGTH_SHORT).show();
            }
            isGsmOpen = false;

        }
    }

    ;

    /**
     * 广播监听网络变化
     */
    public class ConnectionChangeReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            NetworkInfo wifiNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

            if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
                isConnect = false;
            } else {
                isConnect = true;
            }
        }
    }

    /**
     * 注册广播
     */
    private void registerReceiver() {
        IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
        myReceiver = new ConnectionChangeReceiver();
        this.registerReceiver(myReceiver, filter);
    }

    /**
     * 注销广播
     */
    private void unregisterReceiver() {
        this.unregisterReceiver(myReceiver);
    }

    /**
     * 注销广播
     */
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver();
    }
}
接下来我发下权限的部分:

<pre name="code" class="java"><?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.com.keyfuncation" >
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" ></uses-permission>
    <uses-permission android:name="android.permission.BLUETOOTH" ></uses-permission>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <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>
    </application>

</manifest>



接下来顺便说下我这里有一个bug就是当你是双卡的时候 手机的信号强度是99的也就是说是一个无法识别的状态,也就是说你其实手机两张卡都有信号但是显示的是无信号。懂的也可以教下我如何区分单卡还是双卡一类的知识,google是不提供这方面的接口的。

最后发一下效果图:


哈哈~界面有点丑希望大家见谅。


android内存性能数据获取--api篇 是这样的,卤煮最近刚写一个性能自动化监控工具,其中针对播放器那块需要监控内存和cpu,选用的框架是instrumentation框架,所以只能用api方式啦。当然,获取内存数据其实有很多方式,包括 - adb shell dumpsys meminfo [pkg] - cat /proc/meminfo - android monitor图形界面 - 然后就是我们今天要学习的 阅读详情

相关推荐

Android 关于设备状态和操作的API

Android 关于设备状态和操作的API。 获取总大小 获取可用大小 获取SD卡的总大小 获取SD卡可用大小 获取总内存大小 获取可用内存大小 获取系统版本 安装客户端 获取FilesDir目录 获取SD卡路径 获取缓存目录 获取APP版本号 获取当前网络类型 是否是wifi连接状态 获取当前网络状态信息 获取wifi热点 获取屏幕宽度(分辨率PX) 获取屏幕高度(分辨率PX) 获取屏幕Density 获取屏幕DPI 设置屏幕唤醒状态 获取屏幕亮度 拨打电话(将号码带到拨号界面,不直接拨出) 发送短信 发送彩信 打开URL 获得小区识别码(CellID),即无线网络上报终端所处的小区号(根据服务的基站来估计),位置业务平台把小区号翻译成经纬度坐标。 获得位置区编码(Lac:gsmlocationarea code)(移动通信系统中),是为寻呼而设置的一个区域,覆盖一片地理区域,初期一般按行政区域划分(一个县或一个区),现在很灵活了,按寻呼量划分. 当一个LAC下的寻呼量达到一个预警门限,就必须拆分. 获取手机IMEI 获取手机IMSI

Android中getSystemService介绍,获取系统的运行状态,判断当前网络状态

在Android后台运行着很多service,他们在系统启动是通过SystemService开启,支持系统的正常工作,也帮助我们更好的实现各种功能。 getSystemService是activity的一个方法,通过context进行调用,通过不同的服务名获得相应的服务对象,再根据获得的对象调用所需要的方法一下是一些服务的名称以及返回对象                     传

小杨的博客 1263

python 通过adb 查看Android系统状态脚本

python 通过adb 查看Android系统状态脚本 网速 向pc端wireshark.py 实时传递网络数据。自己亲测过可以使用

BroadcastReceiver的使用--系统广播(显示手机电量)

BroadcastReceiver的使用--系统广播(显示手机电量)

qq_50272406的博客 1320

手把手教你用单结晶体管搭建简易振荡电路(含电路图和波形分析)

本文详细介绍了如何使用单结晶体管(UJT)搭建简易振荡电路,包括电路设计、波形分析和实战技巧。通过具体的电路图和参数计算,帮助电子爱好者和工程师快速掌握UJT振荡器的设计与调试方法,适用于脉冲信号生成和时钟源制作等应用场景。

weixin_29207533的博客 516

Paho Asynchronous MQTT C Client Library--MQTTAsync API

异步MQTT 客户端库for C

yoyo勰的博客 1264

Android GSM+CDMA基站定位

转自:http://www.linuxidc.com/Linux/2012-06/62910.htm

YzhilongY的专栏 711

Qt C++ bridge模式(桥)

Bridge模式使得抽象和实现能够相对独立。 bridge.h #pragma once #include class CImplementor { public: virtual void operateImp() = 0; }; class CRectImplementor : public CImplementor { public: CR

thinkme2010的专栏 1894

2024年失业后我整理了一份系统的Android面试题(含答案)

列举java的集合以及集合之间的继承关系集合类以及集合框架容器类介绍以及之间的区别(容器类估计很多人没听这个词,Java容器主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections),具体的可以看看这篇博文List,Set,Map的区别List和Map的实现方式以及存储方式HashMap的实现原理HashMap数据结构?HashMap源码理解。

2401_84519998的博客 934

在Unity中为Sentis部署的YOLOv8模型集成NMS层并实现移动端性能优化

本文详细讲解了在Unity中利用Sentis部署YOLOv8模型时,如何通过代码动态集成NMS层以解决移动端性能瓶颈。文章核心在于避免导出时绑定NMS,转而使用Sentis原生API在运行时高效构建NMS处理流程,并分享了关键的GPU数据操作与移动端性能优化技巧,确保模型在移动设备上流畅运行。

p1q2r的博客 1094

(2-2-2)位置控制算法:常用的位置控制算法(2)

例如下面是一个使用滑模控制算法实现机器人位置控制的例子,在该例子中,假设机器人在一维空间中移动,目标是使机器人的位置迅速、鲁棒地达到设定的目标位置。自适应控制算法通过实时地调整控制器参数,可以适应系统的变化,从而提高系统的鲁棒性和性能。模型预测控制(Model Predictive Control,MPC)是一种先进的控制策略,通常应用于动态系统,以实现对系统状态的优化控制。(6)迭代优化:随着时间推移,MPC迭代执行上述步骤,持续优化控制输入,以适应系统动态和外部扰动,实现对系统状态的稳健控制。

码农三叔 1608

android获取系统wifi状态等

android获取系统wifi状态等 WIFI   获取WIFI状态     WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);     if(wifiManager != null){       int wifiState = wifiManager.getW...

weixin_33816821的博客 113

[SaaS] 阿里妈妈-万相营造

有controlnet的介入,我们是默认controlnet会介入,在inapinting时会把带有商品的画布做一点扩充,然后走inapinting和controlnet,其实也做了一点outpainting的工作。基于阿里妈妈营销平台,提供从图文到视频再到落地页的素材级智能化创意支持,是您营销创意数字资产累积和升值的阵地,最大化提升营销的效率和效果。目前看来抠图基本都是sam了,现在weshop也是,都有一个预扣好的主体,但是一点进去也会重新sam。atomovideo->图生视频。

liguandong 524

Android的日志信息介绍

开发过程中,经常会出现这样的情况: 开发人员经常会抱怨测试提出bug,但没有提供相应的日志。不好分析定位问题。 测试人员也会抱怨,明明提供了日志,可开发人员还老是要求抓取日志,到底什么样的日志才符合开发的要求呢。 以下给大家介绍一下android几种常见的日志,希望能帮助到大家。 logcat main 命令: adb logcat或者adb logcat -main 最最常用

tangmin0719的专栏 1390

ESP32设备驱动-TB6612FNG直流电机驱动

TB6612FNG 是一款出色的双电机驱动器,非常适合将两个小型直流电机(例如微型金属齿轮电机)连接到微控制器,它还可以用于控制单个双极步进电机。 基于 MOSFET 的 H 桥比 L298N 和 Sanyo 的 LB1836M 等旧式驱动器中使用的基于 BJT 的 H 桥效率高得多,后者允许将更多电流输送到电机,而从逻辑电源汲取的电流更少 (对于真正低电压的应用,LB1836 仍然具有 TB6612 的优势)。

视觉与物联智能 3405

〔重庆理工大学〕大学物理实验--变温霍耳效应及其参数测定

每个老师要求不同,实验报告内容和数据仅供参考。

Pretty Boy Fox的博客 3044

android log

log文件分为实时打印的,还有状态信息的两种 实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump, QXDM Log 状态信息的有:adb shell dmesg,adb shell dumpstate,adb shell dumpsys,adb bugreport 实时log:     adb logcat -v tim

xiaotian314的专栏 414

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android dumpsys 命令,Android Shell命令dumpsys

dumpsys命令可以显示手机中所有应用程序的信息,并且也会给出现在手机的状态。直接执行adb shell dumpsys会显示以下所有信息。SurfaceFlinger, accessibility, account, activity, alarm, appwidget, audio, backup, battery, batteryinfo, bluetooth, bluetooth_a2d...

weixin_31140863的博客 408

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Android-世界的活点地图-dumpsys(Android-Detail-工具)

因为程序在计算机中运行时,在内存、CPU、I/O等设备上的数据都是动态的(或者说是易失的),也就是说数据使用完或者发生异常就会丢掉。如果我想得到某些时刻的数据(有可能是调试程序 Bug 或者收集某些信息),就要把他转储(dump)为静态(如文件)的形式。否则,这些数据你永远都拿不到。 2、dump 转储的是什么内容(dump 的对象)? 其实上边已经提到了,就是将动态(易失)的数据,保存为静态的数据(持久数据)。像程序这种本来就保存在存储介质(如硬盘)中的数据,也就没有必要dump。 现在,dump作为&.

Android_1314的博客 409

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Android电源管理简介(下)

文章转载自:http://blog.youkuaiyun.com/hzdysymbol/archive/2009/03/19/4004791.aspx Kernel层 其主要代码在下列位置: drivers/android/power.c 其对Kernel提供的接口函数有 EXPORT_SYMBOL(android_init_suspend_lock); //初始化Suspe

Robin Hu的专栏 6420

Android提高第六篇之BroadcastReceiver

前面分别讨论了Activity和Service,这次就轮到BroastcastReceiver,Broastcast是应用程序间通信的手段。BroastcastReceiver也是跟Intent紧密相连的,动态/静态注册了BroastcastReceiver之后,使用sendBroadcast把Intent发送之后,系统会自动把符合条件的BroastcastReceiver启动,跟嵌入式系统的中断

大写的牛逼 9352

Understanding Android dumpsys output for activity task record

dumpsys is a useful command that dumps interesting system state to the log. It provides various useful system states like battery statistic, wifi informations, CPU info, meminfo for all processes, ac

autumn_xl的专栏 1083

Android 4.0.3 CTS 测试

http://blog.youkuaiyun.com/zxm317122667/article/details/8508013   Android-CTS 4.0.3测试基本配置 1. Download CTS CTS的获取方式有两种: 1.1.由Google提供 1.1.1.打开浏览器输入连接: http://source.android.com/compatibility/downloads.

zhudaozhuan的专栏 6714

android设备抓log

实时log 1. 抓取应用程序的日志。 # adb logcat -b main -v threadtime > /sdcard/main.log 2. 抓取跟 radio/telephony 相关的信息。 # adb logcat -b radio -v threadtime > /sdcard/radio.log 3. 抓取系统事件日志,如触屏事件。...

weixin_30794851的博客 167

Android软件测试的日志文件(Log文件)之多少

Android软件测试的日志文件(Log文件)之多少   实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump,还有高通平台的还会有QXDM日志     状态信息的有:adb shell dmesg,adb shell dumpstate,adb shell dumpsys,adb bugreport     

yunwuhuxin的专栏 664

Android abd shell dumpsys命令探究,轻松拿下offer

dumpsys diskstats root@zms:/ # dumpsys diskstats dumpsys diskstats Latency: 0ms [512B Data Write] Data-Free: 726356K / 1031064K total = 70% free Cache-Free: 122848K / 126992K total = 96% free System-Free: 548480K / 1032088K total = 53% free dumpsys usagest

m0_64604042的博客 1147
上一篇: 一些常用而你却不熟悉的布局属性
下一篇: Gridview 设置行高
谁是谁的学渣
博客等级 码龄13年 21粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值