精华内容
下载资源
问答
  • 华为手机大部分手机都采用的是安卓系统,可能大家平时除了刷机就觉得没什么可玩儿的了,其实有很多指令可能大家都不知道,也就是我们平时所讲的工程模式,可以对手机的整机进行测试,还能设置一部分功能,非常实用的...

    华为手机大部分手机都采用的是安卓系统,可能大家平时除了刷机就觉得没什么可玩儿的了,其实有很多指令可能大家都不知道,也就是我们平时所讲的工程模式,可以对手机的整机进行测试,还能设置一部分功能,非常实用的东西,有兴趣的华为手机机友可以往下看看:

    第一种指令:拔号盘输入*#*#6130#*#*:

    这个相当于安卓2.3时代*#*#4636#*#*指令。可查看当前网络信号、电池信息,设置网络类型,还可以查询手机上各应用的使用情况。其中点击“手机信息”后sim卡在哪个卡槽就选“账户1/2”,想要信号固定在3G的选网络类型为“WCDMA preferred”。

    第二种指令:拔号盘输入*#*#14789632#*#*:

    很重要的一条指令。尤其是其中的“单板基本信息的查询”-“器件型号查询”,你的畅玩由哪些配件堆砌而成一目了然。小伙伴们可以以此比较各个批次是否有什么差别,还可以鉴别手机是不是原厂机器。

    第三种指令:拔号盘输入*#*#1673495#*#*:

    包括LOG、USB端口设置及电池基本参数检测,以及SD卡升级,自己揣摩一下,不懂的可别乱点哦!

    第四种指令:拔号盘输入*#*#121314#*#*;

    这个是手机功能测试。也就是对畅玩的一次全身体检,几乎所有部件的单项测试都包含在内,并且能够保存结果到SD卡。觉得硬件哪块可能有问题的同学可以调用来试试。

    大家看了以上几种进入工程模式的指令后,是不是觉得很强大。注意在官方原厂固件上测试有效,不保证在第三方ROM上是否能进入,由于华为手机型号众多,可能部分机型不适用于部分指令,请以实际操作为准。

    小编搜罗不易,请收藏分享!

    展开全文
  • 技巧(火神软件每周都会更新)◆◆ ◆华为手机大部分手机都采用的是安卓系统,可能大家平时除了刷机就觉得没什么可玩儿的了,其实有很多指令可能大家都不知道,也就是我们平时所讲的工程模式,可以对手机的整机进行...

    L like you实用·技巧(火神软件每周都会更新)

    ◆◆  ◆

    华为手机大部分手机都采用的是安卓系统,可能大家平时除了刷机就觉得没什么可玩儿的了,其实有很多指令可能大家都不知道,也就是我们平时所讲的工程模式,可以对手机的整机进行测试,还能设置一部分功能,非常实用的东西,有兴趣的华为手机机友可以往下看看:

    第一种指令:拔号盘输入*#*#6130#*#*,如下图:

    142938222_2_20180901111038223

    这个相当于安卓2.3时代*#*#4636#*#*指令。可查看当前网络信号、电池信息,设置网络类型,还可以查询手机上各应用的使用情况。其中点击“手机信息”后sim卡在哪个卡槽就选“账户1/2”,想要信号固定在3G的选网络类型为“WCDMA preferred”。

    第二种指令:拔号盘输入*#*#14789632#*#*,如下图:

    142938222_3_20180901111038270

    很重要的一条指令。尤其是其中的“单板基本信息的查询”-“器件型号查询”,你的畅玩由哪些配件堆砌而成一目了然。小伙伴们可以以此比较各个批次是否有什么差别,还可以鉴别手机是不是原厂机器。

    第三种指令:拔号盘输入*#*#1673495#*#*,如下图:

    142938222_4_20180901111038348

    包括LOG、USB端口设置及电池基本参数检测,以及SD卡升级,自己揣摩一下,不懂的可别乱点哦!

    第四种指令:拔号盘输入*#*#121314#*#*,如下图;

    142938222_5_20180901111038411

    这个是手机功能测试。也就是对畅玩的一次全身体检,几乎所有部件的单项测试都包含在内,并且能够保存结果到SD卡。觉得硬件哪块可能有问题的同学可以调用来试试。

    142938222_6_20180901111038551

    大家看了以上几种进入工程模式的指令后,是不是觉得很强大。注意在官方原厂固件上测试有效,不保证在第三方ROM上是否能进入,由于华为手机型号众多,可能部分机型不适用于部分指令,请以实际操作为准。

    142938222_7_20180901111038661

    ——火神软件——

    每天为你更新各种好玩的手机小技巧

    展开全文
  • 华为手机,电脑,编译器用HB-X,USB数据线。 华为手机如何打开开发者模式? 手机打开 设置——》系统——》关于手机——》EMUI版本(有手机可能是Android)。双击6到7次,打开开发者模式。 参考教程请参考:...

    导读:我这手机是华为nova 3系列手机,作为一名前端工程师,需要将代码安装包搞到手机,便于查看自己开发的功能模块是否完善。

    目录

     

    工具准备

    华为手机如何打开开发者模式?

    替换手机应用安装包

    这种应用为啥不上线应用商店?


    工具准备

    华为手机,电脑,编译器用的HB-X,USB数据线。

    华为手机如何打开开发者模式?

    手机打开 设置——》系统——》关于手机——》EMUI版本(有的手机可能是Android)。双击6到7次,打开开发者模式。

    参考教程请参考:https://jingyan.baidu.com/article/6b97984d526f345ca3b0bf7e.html

    打开开发者模式,返回上一级,找到开发人员选项,把USB相关的权限都打开。

    然后点击确认即可。

    手机和电脑都使用USB连接。一般建议使用好点的USB数据线,有的老式usb可能没有提示。选择传输文件即可。

    替换手机应用安装包

    这是我使用的软件编译器,做前端编辑还行,安卓及ios原生单门有人做,这么不陈述。

    把写好的代码包放到桌面,并进行压缩。

    电脑找到安装包的路径,删除原有的安装包,并把压缩包替换即可。

    这样就可以在原生APP查看新加的功能及效果,便于进一步完善。

    自测版本需要在配置文件修改为true,线上版本需要改为false。

    这种应用为啥不上线应用商店?

    都是内部业务人员使用,如果上线了,每个人都使用,那销售人员不就失业了?

     

     

     

     

     

     

     

    展开全文
  • 首先看到华为平台接口 这些就是云平台上面对接信息,然后现在用HTTPS链接。安全秘钥是每个应用都有一个。 2、开发文档 如果想要开发好APP,一定要看华为云平台上面开发文档,这里直接给出开发文档链接 ...

    1、接口

    首先看到华为平台的接口
    在这里插入图片描述
    这些就是云平台上面的对接信息,然后现在用的HTTPS链接。安全秘钥是每个应用都有一个的。

    2、开发文档

    如果想要开发好APP,一定要看华为云平台上面的开发文档,这里直接给出开发文档的链接
    好好细看就可以很快的入手了。

    3、连接平台代码

    连接方式主要就是以HTTP的方式进行链接的。如果没有这方面的知识必须要好好脑补一下。下面看代码。有端口,IP地址,ID和密钥,密钥要改成自己的。

       /**
         *
         * 登陆
         * */
        private void Login_into() {
    
            //设置登陆数据
            address = edServiceAddress.getText().toString().trim();
            port=edt_port.getText().toString().trim();
            user = etUsername.getText().toString().trim();
            pwd = etPassword.getText().toString().trim();
    
            Config.all_url="https://"+address+":"+port;
            //判断文本框信息是否为空,并进行相关处理
            //如果都填写,则进行HTTPS请求初始化
            if (TextUtils.isEmpty(address)) {
                Toast.makeText(LoginActivity.this, "请输入IP", Toast.LENGTH_SHORT).show();
            }else if(TextUtils.isEmpty(port)){
                Toast.makeText(LoginActivity.this, "请输入端口号", Toast.LENGTH_SHORT).show();
            }
            else {
                if (TextUtils.isEmpty(user) || TextUtils.isEmpty(pwd)) {
                    Toast.makeText(LoginActivity.this, "用户信息不能为空", Toast.LENGTH_SHORT).show();
                }
                else {
                        Init_Demand_HTTPS();
    //                }
                }
            }
        }
    
        /**
         *
         * 用户信息请求
         */
        private void    Init_Demand_HTTPS() {
    		//开启新线程进行数据请求
            new Thread(new Runnable() {
                @Override
                public void run() {
                    Message msg = new Message();
                    Bundle data = new Bundle();
                    try {
    					//设置服务器的url(直接到登录界面的url)
                        String url="https://"+address+":"+port+"/iocm/app/sec/v1.1.0/login";
    //                    https://49.4.92.191:8743/iocm/app/sec/v1.1.0/login
                        String json= DataManager.Login_Request(LoginActivity.this,url,user,pwd);//连接服务器
                        data.putString("json", json);
                    } catch ( Exception e ) {
                        data.putString("errmsg", e.getMessage());
                    }
                    msg.setData(data);
                    loginhandler.sendMessage(msg);//将登陆界面的程序放进数据库中  防止下次进来再自己输入
                }
            }).start();
    
        }
    

    其中 Login_Request代码为:

    public static String Login_Request(Context mContext, String serverurl,String userID,String tokenpwd)
                throws Exception{
    		//用来保存用户id和密码
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("appId", userID));
            params.add(new BasicNameValuePair("secret", tokenpwd));
    		
            String json = NetConnect.request(mContext, NetConnect.REQUEST_TYPE_POST,
                    serverurl, params);
            return json;
        }
    

    4、返回数据代码

    package com.mcz.smoke_appproject;
    
    import android.content.Context;
    import android.content.SharedPreferences;
    
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.preference.PreferenceManager;
    
    import android.support.annotation.NonNull;
    import android.support.annotation.Nullable;
    import android.support.design.widget.NavigationView;
    import android.support.v4.widget.DrawerLayout;
    import android.support.v7.app.ActionBar;
    import android.support.v7.app.AppCompatActivity;
    
    import android.text.format.DateFormat;
    
    import android.util.Log;
    
    import android.view.KeyEvent;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.inputmethod.InputMethodManager;
    import android.widget.ListView;
    import android.widget.RelativeLayout;
    import android.widget.Toast;
    import android.support.v7.widget.Toolbar;
    
    import com.gyf.barlibrary.ImmersionBar;
    
    import com.mcz.smoke_appproject.app.model.DataInfo;
    import com.mcz.smoke_appproject.app.model.PullrefreshListviewAdapter;
    import com.mcz.smoke_appproject.app.utils.Config;
    import com.mcz.smoke_appproject.app.utils.DataManager;
    import com.mcz.smoke_appproject.app.view.view.IPullToRefresh;
    import com.mcz.smoke_appproject.app.view.view.LoadingLayout;
    import com.mcz.smoke_appproject.app.view.view.PullToRefreshBase;
    import com.mcz.smoke_appproject.app.view.view.PullToRefreshFooter;
    import com.mcz.smoke_appproject.app.view.view.PullToRefreshHeader;
    import com.mcz.smoke_appproject.app.view.view.PullToRefreshListView;
    
    import org.json.JSONArray;
    import org.json.JSONObject;
    
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    
    import butterknife.BindView;
    import butterknife.ButterKnife;
    //整个过程就是发送请求到服务器,返回数据到适配器,再通过适配器传到视图显示
    //华为开发文档  https://iot-dev.huaweicloud.com/assets/docCenter/helpcenter/helpPortal/Portal/helpcenter.html?manualName=UserGuide_COMMON&docSite=COMMON&page=gettingStarted&lang=zh
    public class  MainActivity extends AppCompatActivity {
    
        //  刷新
        @BindView(R.id.main_pull_refresh_lv)//参考  https://blog.csdn.net/qq_36946446/article/details/83542314?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1
        PullToRefreshListView mListView;
    
        //  暂无数据页面
        @BindView(R.id.main_relative)
        RelativeLayout rela_nodata;
    
        //  侧边栏
        //private DrawerLayout mDrawerLayout;
    
        // 暂无数据页面
        private View mNoMoreView;
    
        // 鉴权
        private String login_appid;
        String token = "";
    
        SharedPreferences sp;
    
        //监听back键点击时间
        private long backfirsttime = 0;
    
        // 上拉刷新适配器
        private PullrefreshListviewAdapter adapter;
    
        // 信息数据泛型
        private List<DataInfo> mlist = null;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {//这个方法会在活动第一次被创建的时候调用
            super.onCreate(savedInstanceState);
    		
    		//设置对应的页面
            setContentView(R.layout.main_activity_layout);//開始運行main_activity_layout界面
    
            ButterKnife.bind(this);//Butter Knife自动找到并把相应的视图布局。
    
            //  设置沉浸式状态栏
            ImmersionBar.with(this)
                    .statusBarColor(R.color.blues)
                    .fitsSystemWindows(true)
                    .init();
            //  主页初始化
            init();
        }
    
        @Override
        protected void onResume() {//这个方法会在活动准备好和用户进行交互的时候调用
            super.onResume();
            if ((adapter != null && adapter.getCount() == 0)) {
                refreshButtonClicked();
            }
            hintKbTwo();
        }
    
        @Override
        protected void onRestart() {//这个方法会在活动由停止状态变为运行状态之前调用,即活动被重启了
            super.onRestart();
            refreshButtonClicked();
            hintKbTwo();
        }
    
    	//初始化
        private void init() {
    
            sp = PreferenceManager.getDefaultSharedPreferences(this);
            login_appid = sp.getString("appId","");//用户的名称
            token = sp.getString("token", "");
    
            hintKbTwo();
            rela_nodata.setVisibility(View.GONE);//不可见
    
            //载入暂无设备页面布局文件
            mNoMoreView = getLayoutInflater().inflate(R.layout.no_device_more_footer, null);
    
            //设置加载布局构造器
            mListView.setLoadingLayoutCreator(new PullToRefreshBase.LoadingLayoutCreator() {
                @Override
                public LoadingLayout create(Context context, boolean headerOrFooter,
                                            PullToRefreshBase.Orientation orientation) {
                    if (headerOrFooter)
                        return new PullToRefreshHeader(context);
                    else
                        return new PullToRefreshFooter(context, PullToRefreshFooter.Style.EMPTY_NO_MORE.EMPTY_NO_MORE);
                }
            });
    
    		//获取可刷新视图
            mListView.getRefreshableView().setSelector(getResources().getDrawable(R.color.transparent));
    
            //设置可上拉刷新和下拉刷新
            mListView.setMode(PullToRefreshBase.Mode.DISABLED);
    
            //异步加载数据
            mListView.setOnRefreshListener(new IPullToRefresh.OnRefreshListener<ListView>() {
    
                @Override
                public void onRefresh(PullToRefreshBase<ListView> refreshView,
                                      boolean headerOrFooter) {
                    //填充数据,通过异步进行数据加载
                    new LoadDataAsyncTask(headerOrFooter, false).execute();//取出数据
                }
            });
    		//配置刷新后的列表刷新适配器
            adapter = new PullrefreshListviewAdapter( this);
            adapter.setlogin_appid(login_appid);
            adapter.settoken(token);
    
            mListView=(PullToRefreshListView)findViewById(R.id.main_pull_refresh_lv) ;
            mListView.getRefreshableView().addFooterView(mNoMoreView);
            mListView.setAdapter(adapter);
            mListView.getRefreshableView().removeFooterView(mNoMoreView);
    
            //导航项
            /*Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            ActionBar actionBar= getSupportActionBar();
            actionBar.setHomeAsUpIndicator(R.drawable.ic_menu);
            actionBar.setDisplayHomeAsUpEnabled(true);
             */
            //侧边栏
           /* mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
            final NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                    item.setCheckable(true);
                    mDrawerLayout.closeDrawer(navigationView);
                    return true;
                }
            });*/
        }
    
        /**
         * 在进入界面的时候自动加载一遍
         * 第一次有数据显示
         **/
        private void refreshButtonClicked() {
            mListView.setVisibility(View.VISIBLE); //View类的setVisibility()方法设置是否显示组件
            mListView.setMode(IPullToRefresh.Mode.BOTH);
            mListView.setRefreshing();
        }
    
        //  回收软键盘  参考  https://blog.csdn.net/jueshiwushuang2007/article/details/78392246
        // getCurrentFocus()是获取当前activity中获得焦点的view , 看看是否在Activity中获取焦点 ,否则需求先获取activity 的 Context
        //getWindowToken()获取调用的view依附在哪个window的令牌。
        private void hintKbTwo() {
            InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);// 隐藏软键盘
            if(imm.isActive()&&getCurrentFocus()!=null){  //如果当前焦点填写的数据不为空并且键盘上面没有输入性的东西则关闭键盘
                if (getCurrentFocus().getWindowToken()!=null) {
                    imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
                }
            }
        }
    
        /**
         *  添加数据
         *  华为接口批量查询设备信息
         **/
        private List<DataInfo> ListviewADD_Data(int Fnum, int Onum) {
    
            try {
    			//设置url,直接到设备页  接口的请求地址 https://server:port/iocm/app/dm/v1.4.0/devices/{deviceId}?appId={appId}&select={select}
                String add_url = Config.all_url + "/iocm/app/dm/v1.4.0/devices?appId=" + login_appid
                        + "&pageNo=" + Fnum + "&pageSize=" + Onum;
    			//获取对应的json字符串
                String json = DataManager.Txt_REQUSET(MainActivity.this, add_url, login_appid, token);//这一句
    			
                mlist = new ArrayList<DataInfo>();
    			//把json字符串转换为json对象
                JSONObject jo = new JSONObject(json);
    			//定位到名为devices的json集合
                JSONArray jsonArray = jo.getJSONArray("devices");
    			//添加日志
                Log.i("ssss","jsonArray:" + jsonArray);
    			
                for (int i = 0; i < jsonArray.length(); i++) {
    				//新建设备类
                    DataInfo dataInfo = new DataInfo();
    				
    				//获取对应属性名的数据
                    String deviceinfo = jsonArray.getJSONObject(i).getString("deviceInfo");
                    String servicesinfo = jsonArray.getJSONObject(i).getString("services");
    
                    //如果设备状态信息不是离线,则设置数据,否则输出暂无数据
                    if (!servicesinfo.equals("null")){
                        JSONArray jsa=new JSONArray(servicesinfo);
                        for (int j = 0; j < jsa.length(); j++) {
    						
    						//从设备数组中获取设备对象
                            String ser_data = jsa.getJSONObject(j).getString("data");
                            JSONObject jsonObject = new JSONObject(ser_data);
    						
    						//给dataInfo对象的属性赋值
                            dataInfo.setDeviceCSQ(jsonObject.optString("CSQ"));//optstring -- 选项字符百串  例如 unix,optstring 内容答是 ":abf:o:"就可以取出其值
                            dataInfo.setStart(jsonObject.optString("Star"));
                            dataInfo.setDeviceTemperature(jsonObject.optString("Temperature"));
                            dataInfo.setDeviceHumidity(jsonObject.optString("Humidity"));
                            dataInfo.setDeviceWeight(jsonObject.optString("Weight"));
                            dataInfo.setWorkShi(jsonObject.optString("WorkShi"));
                            dataInfo.setWorkFen(jsonObject.optString("WorkFen"));
    
                        }
                        dataInfo.setDeviceId(jsonArray.getJSONObject(i).optString("deviceId"));
                        dataInfo.setGatewayId(jsonArray.getJSONObject(i).optString("gatewayId"));
                        dataInfo.setLasttime(jsonArray.getJSONObject(i).optString("lastModifiedTime"));
                        JSONObject object = new JSONObject(deviceinfo);
                        dataInfo.setDeviceName(object.optString("name"));
                        dataInfo.setDeviceType(object.optString("deviceType"));//model  deviceType
                        dataInfo.setDeviceStatus(object.optString("status"));
                        mlist.add(dataInfo);
    
                    }
                    else {
                        dataInfo.setDeviceWeight("暂无数据");
                        dataInfo.setDeviceHumidity("暂无数据");
                        dataInfo.setDeviceTemperature("暂无数据");
                        dataInfo.setWorkFen("暂无数据");
                        dataInfo.setWorkShi("暂无数据");
    
                        dataInfo.setDeviceId(jsonArray.getJSONObject(i).optString("deviceId"));
                        dataInfo.setGatewayId(jsonArray.getJSONObject(i).optString("gatewayId"));
                        dataInfo.setLasttime(jsonArray.getJSONObject(i).optString("lastModifiedTime"));
                        JSONObject object = new JSONObject(deviceinfo);
                        dataInfo.setDeviceName(object.optString("name"));
                        dataInfo.setDeviceType(object.optString("deviceType"));//model  deviceType
                        dataInfo.setDeviceStatus(object.optString("status"));
                        mlist.add(dataInfo);
                    }
                }
    
            } catch ( Exception e ) {
                e.printStackTrace();
            }
            return mlist;
        }
    
        /**
         *  手动添加设备
         *
         **/
       @Nullable//重载
        private List<DataInfo> Listview_Inputmanual(String dvid) {
    
            try {
                //  https://server:port/iocm/app/dm/v1.4.0/devices/{deviceId}?appId={appId}
                String login_appid = sp.getString("appId","");
                String add_url = Config.all_url + "/iocm/app/dm/v1.4.0/devices/"+dvid+"?appId=" + login_appid;
                String json = DataManager.Txt_REQUSET(MainActivity.this, add_url, login_appid, token);
                Log.i("aaa", "josn1" + json);
    
                mlist = new ArrayList<DataInfo>();
                JSONObject jo = new JSONObject(json);
                String code_error=jo.optString("error_code");
    
                if (!code_error.equals("")){
                    return null;
                }else{
    
                    DataInfo dataInfo = new DataInfo();
                    String deviceinfo = jo.optString("deviceInfo");
                    dataInfo.setDeviceId(jo.optString("deviceId"));
                    dataInfo.setLasttime(jo.optString("lastModifiedTime"));
                    JSONObject object = new JSONObject(deviceinfo);
                    dataInfo.setDeviceName(object.optString("name"));
                    dataInfo.setDeviceStatus(object.optString("status"));
                    String servicesinfo = jo.optString("services");
    
                    // servicesinfo 非空则设置dataInfo数据,否则输出暂无数据
                    if (!servicesinfo.equals("null")){
                        JSONArray jsa=new JSONArray(servicesinfo);
                        for (int j = 0; j <  jsa.length(); j++) {
                            String ser_data = jsa.getJSONObject(j).getString("data");
                            JSONObject jsonObject = new JSONObject(ser_data);
                            dataInfo.setDeviceCSQ(jsonObject.optString("CSQ"));
                        }
                        mlist.add(dataInfo);
                    }else{
                        dataInfo.setDeviceCSQ("暂无数据");
                    }
                }
            }
    
            catch ( Exception e ) {
                Toast.makeText(this, "请输入正确的设备ID", Toast.LENGTH_SHORT).show();
                rela_nodata.setVisibility(View.VISIBLE);
                e.printStackTrace();
            }
            return mlist;
        }
    
        /**
         * 异步加载任务
         * 下拉刷新 上拉加载
         **/
    
        int numbers = 5;
        int begin = 0;
    
        // 选择类型
        boolean type_choose = true;
    
        String datajson = "";
    
        private class LoadDataAsyncTask extends AsyncTask<Void, Void, List<DataInfo>> {
            private boolean mHeaderOrFooter;
            private boolean is_Add;
    
            public LoadDataAsyncTask(boolean headerOrFooter, boolean isadd) {
                mHeaderOrFooter = headerOrFooter;
                is_Add = isadd;
            }
    
            //  执行线程任务前的操作
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                if (mHeaderOrFooter) {
                    mListView.setVisibility(View.VISIBLE);
                }
                mListView.getRefreshableView().removeFooterView(mNoMoreView);
            }
    
            //  接受输入参数,在后台执行任务中的耗时操作,并返回线程任务执行的结果
            @Override
            protected List<DataInfo> doInBackground(Void... params) {
                if (MainActivity.this.isFinishing()) {
                    return null;
                }
    
                List<DataInfo> result = null;
                try {
                    //  首先判断是否查询所有还是单个
                    if (!is_Add) {
                        if (mHeaderOrFooter && type_choose) {
                            //  下拉刷新走的方法
                            if (type_choose == false) {
                                adapter.clearItem();
                                mlist = new ArrayList<DataInfo>();
                            }
    
                            type_choose = true;
                            numbers = 5;
                            result = ListviewADD_Data(0, numbers);
                            begin=5;
                        } else {
                            //  上拉加载走的方法
                            if (type_choose == false) {
                                adapter.clearItem();
                                mlist = new ArrayList<DataInfo>();
                                numbers = 5;
                                result = ListviewADD_Data(0, numbers);
                                begin = 5;
                                type_choose = true;
    
                            } else {
    
                                begin = begin + 5;
                                result = ListviewADD_Data(0, begin);
                                type_choose = true;
                            }
                        }
                    }
                    //  否则...
                    else {
                        //  更据ID查询
                        result = Listview_Inputmanual(datajson);
                    }
                    return result;
    
                } catch ( Exception e ) {
                    e.printStackTrace();
                    return null;
                }
            }
    
            //  接受线程任务执行结果,将执行结果显示到UI组件
            @Override
            protected void onPostExecute(List<DataInfo> result) {
                super.onPostExecute(result);
                mListView.onRefreshComplete();
                if (MainActivity.this.isFinishing()) {
                    return;
                }
    
                if (result != null) {
                    if (mHeaderOrFooter) {
                        CharSequence dateText = DateFormat.format("yyyy-MM-dd kk:mm:ss", new Date());
                        for (LoadingLayout layout : mListView.getLoadingLayoutProxy(true, false).getLayouts()) {
                            ((PullToRefreshHeader) layout).setLastRefreshTime(":" + dateText);
                        }
                        adapter.clearItem();//清空适配器
                        mlist = new ArrayList<DataInfo>();
                    }
                    if (adapter.getCount() == 0 && result.size() == 0) {
                        mListView.setVisibility(View.GONE);
                        mListView.getRefreshableView().removeFooterView(mNoMoreView);
                        rela_nodata.setVisibility(View.VISIBLE);
                    } else if (result.size()>5) {
    
                        //在这里判断数据的多少确定下一步能否上拉加载
    
                        if (result.size()%5==0){
                        }else{
                            mListView.setFooterRefreshEnabled(false);
                            mListView.getRefreshableView().addFooterView(mNoMoreView);
                            rela_nodata.setVisibility(View.GONE);
                            mListView.setVisibility(View.VISIBLE);
                        }
    
                    } else if (mHeaderOrFooter) {
    
                        if (result.size()>0){
                            rela_nodata.setVisibility(View.GONE);
                            mListView.setVisibility(View.VISIBLE);
                        }
                        mListView.setFooterRefreshEnabled(true);
                        mListView.getRefreshableView().removeFooterView(mNoMoreView);
                    }
    
                        addlistdata(result);
                        adapter.notifyDataSetChanged();//刷新完成
    
                }else{
                    rela_nodata.setVisibility(View.VISIBLE);
                    Toast.makeText(MainActivity.this, "暂无设备信息", Toast.LENGTH_SHORT).show();
    
                }
            }
        }
    
        /**
         * 数据循环添加
         *
         **/
        private void addlistdata(List<DataInfo> result) {
    
            int count = result.size();//数据的长度
    
            adapter.clearItem();
            for (int i = 0; i < count; i++) {
                adapter.addItem(result.get(i));
                mlist.add(result.get(i));
            }
        }
    //在间隔两秒之内按两次返回键则关闭APP
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            /**
             * 监听返回按钮 (back键)
             * 使用系统时间里判断用户是否需要退出
             *//* 参考  https://www.cnblogs.com/HDK2016/p/8695052.html  */
            if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
                if (System.currentTimeMillis() - backfirsttime > 2000) {
                    Toast.makeText(getApplication(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
                    backfirsttime = System.currentTimeMillis();
                    return false;//返回false表示不退出   ture表示退出
                }
                else {
                    finish();
                    System.exit(0);//结束进程
                    return true;
                }
                //return true;
            }
            return super.onKeyDown(keyCode, event);
        }
    
    }
    
    

    最后分享一下整个APP工程:关注微信公众号一手创客回复数字07即可获得下载链接

    展开全文
  • 我在华为13年时间里,基本上就做了2.5个重要事,一个是手机可靠性技术领域建设,另外一个就是方舟编译器项目,额外0.5个事情就是目前HarmonyOS设计。这篇我重点回忆一下自己从事可靠性领域发生故事和遇到...
  • 最近我网上看到几次关于“华为手机的时候发现电不耐用,只需要使用补电功能就可以更耐用”的视频和文章,到底是不是这样操作了手机电池就可以变得更耐用了呢?于是今天我就打开自己的手机体验了一次补电的过程。按照...
  • 一般安卓手机测试代码和微信代码

    万次阅读 2017-07-06 16:28:50
    华为手机】: *#*#6130#*#*  【vivo手机】: *#*#4838#*#* 【大部分安卓手机通用】: *#*#4636#*#* 进入工程模式: 【华为手机】: *#*#2846579#*#*  【小米手机】: *#*#6484#*#*  三星、苹果、...
  • 在此以华为手机为例,先将手机解锁,然后打开拨号页面,接着输入“#*#2846579#*#*”这一串代码。 输入这一行代码后会自动此出现一个新的工程菜单页面,在这个页面一共有六种操作,在此我们选择最后一项“补电” ...
  • 进入设备的工程模式打开Log开关 手机 在拨号盘输入以下代码 *#*#2846579#*#* 平板 横屏模式下,打开计算器,输入一下代码 一定要切换到横屏模式,否则无法输入括号 ()()2846579()()= 1.点击后台设置 2....
  • 华为鸿蒙系统应用开发工具介绍 DevEco Studio

    万次阅读 多人点赞 2020-09-14 21:33:12
    简单介绍华为鸿蒙系统应用开发工具 DevEco Studio安装和使用 ...HUAWEI DevEco Studio除具备工程管理、代码编辑、编译构建、调试仿真等基础功能外,还提供了提供远程真机调试、APP云测试等特色服.
  • 最开始打算使用谷歌提供开发包进行开发,但是发现谷歌提供开发包开发起来繁琐而且识别率低,代码编写繁琐,这是发现了华为开发者网站提供hms.scan扫码模块开发包,方便快捷,而且识别率高,可同时识别多个...
  • 发布时间:2016-08-12魅族MX5在魅族系列手机中一直是非常热门,目前还是处于抢购状态,能抢到手用户有限,掌握一些魅族MX5抢购技巧能够增加入手魅族MX5据.下面99安卓网小编就来分享魅族MX5抢购时间和抢购技巧,供...
  • 当汽车中软件代码行数成正比不断增长,随之而来是软件工程复杂度指数级增长和软件故障概率提升。车辆无论是遇到软件故障还是更新,如果每次更新都要去4S店,效率将非常低下,线下售后运营负荷也将沉重,既难以...
  • 程序中的Log.d打印信息全然不出来,折腾了好久,在网友帮助下才知道,原来华为为了提高手机的性能,把Log信息给关闭了 解决办法: 1.进入手机拨号界面,输入“*#*#2846579#*#*”,弹出“工程菜单” 2.选择...
  • 软件工程教程

    2012-07-06 23:10:29
    在较大公司,为自有品牌或者其他品牌设计手机或者平板电脑总体方案。 根据需求对系统进行定制外,为系统编写定制应用。 第二类开发者 在创业型公司或者是独立开发者,盈利方式主要2种: 为国外公司外包开发,...
  • 华为发布鸿蒙,分布式微内核全场景新一代操作系统,多终端一次开发,余承东宣布鸿蒙系统随时可用于手机,现有android应用全兼容,而且完全开源。鸿蒙在发布会上最为人称道一点是‘开源’,毕竟能经得起世人检验...
  • 前几天导入新工程,用别人的代码,打包以后发现部分华为手机和小米手机安装签名打包apk文件老是提示安装失败,说是与已安装应用有权限冲突,有说将开发者选项miui优化关闭即可,但是试了不管用,还有说是...
  • Android中PopupWindow设置背景方案处理android中为PopupWindow设置半透明背景是比较常见需求了,之前工作中没有遇到在华为手机失效问题,昨天终于遇到了,网上查了下,没有查到原因,只是得到一个解决问题...
  • 华为手机调试机子一个app时候,突然一直卡在waiting for debugger界面,就算是run不是调试状态也会跳出并且卡在这个界面上。 尝试方法:1.断开连接重连 2.clean project 3.注释掉部分代码(认为是代码的问题) ...
  • 初入安卓

    2018-01-30 11:29:27
    初入安卓 由于项目原因,新入手安卓,小小...另外调试的时候发现输出不了调试信息,后来发现是因为用了华为手机的原因, 需要在华为手机上面打开log日志,方法如下,拨号页面拨 *#*#2846579#*#* 进入工程菜单:...
  • Android中PopupWindow设置背景方案处理android中为PopupWindow设置半透明背景是比较常见需求了,之前工作中没有遇到在华为手机失效问题,昨天终于遇到了,网上查了下,没有查到原因,只是得到一个解决问题...
  • 在我们电商系统中每一个品牌都要有它所属分类,华为,小米等都是手机分类下品牌;但是一个品牌不止只关联一个分类,他会关联很多分类;比如小米造了手机关联手机分类,又造电视关联电视分类等;一个
  • HUAWEI DevEco Studio除具备工程管理、代码编辑、编译构建、调试仿真等基础功能外,还提供了提供远程真机调试、APP云测试等特色服务。同时,汇聚了HiAI、互联互通、多媒体、安全服务等EMUI开放能力,提供AI模型、...
  • android studio 使用真机进行调试,在logcat中无法打印出代码中有Log.d输出log,手机华为荣耀7,解决方法如下: 1、进入手机拨号界面,输入“*#*#2846579#*#*”,弹出“工程菜单” 2、选择“后台设置” 3、...
  • 上百家授权客户在付费使用VirtualApp商业版代码,集成VirtualApp代码的APP日启动次数超过2亿次,众多安卓工程师向我们提供不同场景下用户反馈,通过我们技术团队不断优化迭代,VirtualApp商业版代码性能更好、兼容...
  • 从技术实现上,讲解了5个android平台下完整综合实例及源代码分析,分别是rss阅读器、基于google map个人gps、豆瓣网(web 2.0)客户端、在线音乐播放器、手机信息查看助手。本书注重对实际动手能力指导,在遵循...

空空如也

空空如也

1 2
收藏数 37
精华内容 14
关键字:

华为手机的工程代码