GVKun编程网logo

Android wifi 调试详解及简单实例(安卓wifi调试)

14

如果您对Androidwifi调试详解及简单实例感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于Androidwifi调试详解及简单实例的详细内容,我们还将为您解答安卓wif

如果您对Android wifi 调试详解及简单实例感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于Android wifi 调试详解及简单实例的详细内容,我们还将为您解答安卓wifi调试的相关问题,并且为您提供关于adb wireless进行Android手机调试详解、Android AOP 注解详解及简单使用实例(三)、Android Build类的详解及简单实例、Android Button的基本用法详解及简单实例的有价值信息。

本文目录一览:

Android wifi 调试详解及简单实例(安卓wifi调试)

Android wifi 调试详解及简单实例(安卓wifi调试)

Android wifi 调试

前言:

做android开发的时候,经常遇到的一个问题就是真机调试次数多了,会导致usb口,损坏,而且长期给手机充电也会损坏手机,所以我想了想是否可以拿usb调试,网上找了下,还真可以,但都写的比较繁琐,今天我们就使用3条命令完成任务

首先我们需要使用的工具是adb,它基于tcp协议之上

1.开始我们需要给手机开启tcpip模式,这个时候需要usb线连接手机

adb tcpip 端口号(随便写个大点的比如:5555)

写完这个之后,usb就没用了

2.你需要查看你手机的ip地址,方法很多

如果想使用命令的话(如果使用命令查看,usb还不能拔,查完再拔)

adb shell ifconfig wlan0

如果不使用的话,手机上也可以查到

查到Ip后,就可以连接了

3.连接手机

adb connect 手机ip

4.如果想断开连接的话

adb disconnect 手机ip

大功告成,注意手机和PC应该在同一wifi下,实际你只要PC能ping通手机ip就没问题,如果没有路由器怎么办?你电脑里面的360wifi是干什么的?

补充:

如果想切换回usb模式

adb usb

如果切换回去的话,下次连接还需要数据线开启tcpip,如果不切换的话,以后调试就再也不用数据线了

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

adb wireless进行Android手机调试详解

adb wireless进行Android手机调试详解

今天电脑usb接口出问题了,就想着可不可以通过wifi连上手机,然后进行eclipse调试,看logcat等等。

网上搜了一下,果然有这种解决方案。

现在分享给各位android小伙伴。

前提:需要你的windows电脑已经安装了android sdk。

步骤:

1.关键的东东是需要在你的android手机上安装一个神奇的软件:Adb Wireless

2.在你的手机上安装成功后,图标如图:


3.进入该app,界面如下,点击中间那个很大的按钮,下方会出现连接信息:


4.你需要确保adbwireless这个app获得了你手机的root权限,如果你不确定,可以进入授权管理查看:


Android AOP 注解详解及简单使用实例(三)

Android AOP 注解详解及简单使用实例(三)

Android  注解

相关文章:

Android AOP注解Annotation详解(一)
Android AOP之注解处理解释器详解(二)
Android AOP 注解详解及简单使用实例(三)

一、简介

在Android 里面 注解主要用来干这么几件事:

  1. 和编译器一起给你一些提示警告信息。
  2. 配合一些ide 可以更加方便快捷 安全有效的编写Java代码。谷歌出的support-annotations这个库 就是主要干这个的。
  3. 和反射一起 提供一些类似于spring 可配置的功能,方便简洁。

二、Support Annotations栗子

这里使用官方的一个库,说明在开发中的简单一个应用。

2.1 导包

在新建项目的时候会自动导的,可以看build.gradle中的依赖dependencies是这样的。

dependencies {
 compile filetree(dir: 'libs',include: ['*.jar'])
 androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',{
  exclude group: 'com.android.support',module: 'support-annotations'
 })
 compile 'com.android.support:appcompat-v7:25.1.1'
 testCompile 'junit:junit:4.12'
}

如果没有的话,自己在build.gradle的依赖添加(xx.x.x为你的compileSdkVersion版本号):

compile 'com.android.support:support-annotations:xx.x.x'

2.2 使用

这时候就可以使用一些support-annotations提供的注解,下面举一些栗子:

1、 @NonNull

test方法参数添加了一个NonNull注解,然后我们传递一个空的参数过去。

public class MainActivity extends AppCompatActivity {

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

  String s = null;
  test(s);
 }

 public void test(@NonNull String s){
  System.out.println(s);
 }

}

IDE就会提示警告

这里写图片描述

2、 @StringRes

再定义testString方法参数添加了一个StringRes注解,然后我们传递一个数字过去。

public class MainActivity extends AppCompatActivity {

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

  testString(112312);
  testString(R.string.app_name);
 }

 public void testString(@StringRes int s){
  System.out.println(s);
 }

}

IDE就会提示

这里写图片描述

三、实现自己的ButterKnife

经过之前的知识,我们已经知道注解的原理和使用了,这里实现ButterKnife的一个简单功能,View的注入: 一个注解,一个解析器即可。

3.1 BindView注解

@Target(ElementType.FIELD) //解析常量
@Retention(RetentionPolicy.RUNTIME) //运行时
public @interface BindView {
  int value() default -1; //标识控件
}

3.2 BindViewParser解析器

/**
 * Created by Litp on 2017/2/17.
 */
public class BindViewParser {

 /**
  * 传递activty或者View 对象,使用反射获取view变量
  * @param object
  */
 public static void inject(Object object) {

  try {
   parse(object);
  } catch (Exception e) {
   e.printstacktrace();
  }
 }

 /**
  * 解析获取值
  * @param object
  * @throws Exception
  */
 public static void parse(Object object) throws Exception {

  final Class<?> clazz = object.getClass();

  View view = null;

  //获取clazz的变量,不论private还是public
  Field[] fields = clazz.getDeclaredFields();

  for (Field field : fields) {

   //这个变量 是否有BindView注解
   if (field.isAnnotationPresent(BindView.class)) {
    //获取这个变量对应的注解
    BindView injectView = field.getAnnotation(BindView.class);
    //获取值
    int id = injectView.value();
    if (id <= 0) {
     throw new Exception("View的id不能为空");
    } else {
     //设置可以访问
     field.setAccessible(true);
     //获取view
     if (object instanceof View) {
      view = ((View) object).findViewById(id);
     } else if (object instanceof Activity) {
      view = ((Activity) object).findViewById(id);
     }
     //设置View
     field.set(object,view);
    }

   }

  }

 }


}

3.3 Activity使用

public class MainActivity extends AppCompatActivity {

 //使用注解标识变量
 @BindView(R.id.tv_test)
 TextView textView;

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

  //传递当前activty给解析器,进行初始化view
  BindViewParser.inject(this);

  //这里就已经是初始化完毕了,可以进行使用了
  textView.setText("测试自己的注入demo");

 }


}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Android Build类的详解及简单实例

Android Build类的详解及简单实例

Android Build类的详解及简单实例

一、类结构:

java.lang.Object
? android.os.Build

二、类概述:从系统属性中提取设备硬件和版本信息。

三、内部类:

1、Build.VERSION 各种版本字符串

2、Build.VERSION_CODES 目前已知的版本代码的枚举类

四、常量:UNKNowN 当一个版本属性不知道时所设定的值。其字符串值为 unkNown .

五、构造方法: Build ()

六、静态属性

1、BOARD 主板:The name of the underlying board,like goldfish.

2、BOOTLOADER 系统启动程序版本号:The system bootloader version number.

3、BRAND 系统定制商:The consumer-visible brand with which the product/hardware will be associated,if any.

4、cpu_ABI cpu指令集:The name of the instruction set (cpu type + ABI convention) of native code.

5、cpu_ABI2 cpu指令集2:The name of the second instruction set (cpu type + ABI convention) of native code.

6、DEVICE 设备参数:The name of the industrial design.

7、disPLAY 显示屏参数:A build ID string meant for displaying to the user

8、FINGERPRINT 唯一识别码:A string that uniquely identifies this build. Do not attempt to parse this value.

9、HARDWARE 硬件名称:The name of the hardware (from the kernel command line or /proc).

10、HOST

11、ID 修订版本列表:Either a changelist number,or a label like M4-rc20.

12、MANUFACTURER 硬件制造商:The manufacturer of the product/hardware.

13、MODEL 版本即最终用户可见的名称:The end-user-visible name for the end product.

14、PRODUCT 整个产品的名称:The name of the overall product.

15、RAdio 无线电固件版本:The radio firmware version number. 在API14后已过时。使用geTradioVersion()代替。

16、SERIAL 硬件序列号:A hardware serial number,if available. Alphanumeric only,case-insensitive.

17、TAGS 描述build的标签,如未签名,debug等等。:Comma-separated tags describing the build,like unsigned,debug.

18、TIME

19、TYPE build的类型:The type of build,like user or eng.

20、USER

七、公共方法:

public static String geTradioVersion() 获取无线电固件版本

八、测试示例:

public static String getDeviceInfo() { 
    StringBuffer sb = new StringBuffer(); 
    sb.append("主板: "+ Build.BOARD+"\n"); 
    sb.append("系统启动程序版本号: " + Build.BOOTLOADER+"\n"); 
    sb.append("系统定制商:" + Build.BRAND+"\n"); 
    sb.append("cpu指令集: " + Build.cpu_ABI+"\n"); 
    sb.append("cpu指令集2 "+ Build.cpu_ABI2+"\n"); 
    sb.append("设置参数: "+ Build.DEVICE+"\n"); 
    sb.append("显示屏参数:" + Build.disPLAY+"\n"); 
    sb.append("无线电固件版本:" + Build.geTradioVersion()+"\n"); 
    sb.append("硬件识别码:" + Build.FINGERPRINT+"\n"); 
    sb.append("硬件名称:" + Build.HARDWARE+"\n"); 
    sb.append("HOST: " + Build.HOST+"\n"); 
    sb.append("修订版本列表:" + Build.ID+"\n"); 
    sb.append("硬件制造商:" + Build.MANUFACTURER+"\n"); 
    sb.append("版本:" + Build.MODEL+"\n"); 
    sb.append("硬件序列号:" + Build.SERIAL+"\n"); 
    sb.append("手机制造商:" + Build.PRODUCT+"\n"); 
    sb.append("描述Build的标签:" + Build.TAGS+"\n"); 
    sb.append("TIME: " + Build.TIME+"\n"); 
    sb.append("builder类型:" + Build.TYPE+"\n"); 
    sb.append("USER: " + Build.USER+"\n"); 
    return sb.toString(); 
  } 

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Android Button的基本用法详解及简单实例

Android Button的基本用法详解及简单实例

Android Button的基本用法详解

Button的Click点击事件处理:

  mButtonBack.setonClickListener(new OnClickListener() {
      @Override
      public void onClick(View arg0) {
        Log.e("================","MenuBackBtnListen");
        MenuimageView.setVisibility(View.INVISIBLE);
        mButtonBack.setVisibility(View.INVISIBLE);
        buttonCmdLl.setVisibility(View.INVISIBLE);
        mLabel.setVisibility(View.INVISIBLE);
      }
    });

Button的Press状态的获取及调用:

   mButtonBack.setonTouchListener(new View.OnTouchListener() {
      InputStream is = null;
      @Override
      public boolean onTouch(View arg0,MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN){
          try {
            is = asm.open("ReturnBtnPress.png");
          } catch (IOException e) {
            e.printstacktrace();
          }
        }else if(event.getAction() == MotionEvent.ACTION_UP){
          try {
            is = asm.open("ReturnBtnnormal.png");
          } catch (IOException e) {
            e.printstacktrace();
          }
        }
        mButtonBack.setBackground(Drawable.createFromStream(is,null));
        return false;
      }
    });

说明:

private AssetManager asm;
asm=getAssets();

图片资源是放在 /Android/assets/ 文件夹下。

没有用R资源引用图片。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

今天关于Android wifi 调试详解及简单实例安卓wifi调试的介绍到此结束,谢谢您的阅读,有关adb wireless进行Android手机调试详解、Android AOP 注解详解及简单使用实例(三)、Android Build类的详解及简单实例、Android Button的基本用法详解及简单实例等更多相关知识的信息可以在本站进行查询。

本文标签: