GVKun编程网logo

在android studio中扫描ble模块(蓝牙4.0)(android 蓝牙扫描方法 多次)

14

关于在androidstudio中扫描ble模块(蓝牙4.0)和android蓝牙扫描方法多次的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于AndroidSdk在AndroidStudi

关于在android studio中扫描ble模块(蓝牙4.0)android 蓝牙扫描方法 多次的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Android Sdk在Android Studio中的集成、Android Studio软件技术基础 —Android项目描述---1-类的概念-android studio 组件属性-+标志-Android Studio 连接真机不识别其他途径、android-studio – 一个奇怪的领域出现在android studio中、android-studio – 任何人都可以在android studio中使用chromecast android示例吗?等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

在android studio中扫描ble模块(蓝牙4.0)(android 蓝牙扫描方法 多次)

在android studio中扫描ble模块(蓝牙4.0)(android 蓝牙扫描方法 多次)

我正在尝试开发一个应用来扫描BLE设备.但是,它只扫描一次.我尝试使用while循环来循环它但它挂在那里.扫描部分处于继续功能:

package com.example.user.myfriend;

import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Handler;
import android.support.v7.app.ActionBaractivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import org.w3c.dom.Text;


public class MainActivity extends ActionBaractivity {
BluetoothAdapter mBluetoothAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {


    BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUetoOTH_SERVICE);
    mBluetoothAdapter = bluetoothManager.getAdapter();

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    hello();

}

public void hello() {

    if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) {
        Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

        startActivityForResult(enableBluetooth,1);


    }
    proceed();
}


@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data) {

    if (requestCode == 1) {
        if (resultCode == RESULT_OK) {
            proceed();


        }

    }
    super.onActivityResult(requestCode,resultCode,data);
}

private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {


    public void onLeScan(final BluetoothDevice device,final int RSSi,final byte[] scanRecord) {

        int startByte = 2;
        boolean patternFound = false;
        while (startByte <= 5) {

            if (((int) scanRecord[startByte + 2] & 0xff) == 0x02 && //Identifies an iBeacon
                    ((int) scanRecord[startByte + 3] & 0xff) == 0x15) { //Identifies correct data length
                patternFound = true;
                break;
            }
            startByte++;
        }

        if (patternFound) {

            //Convert to hex String
            byte[] uuidBytes = new byte[16];
            System.arraycopy(scanRecord,startByte + 4,uuidBytes,16);
            String hexString = bytesToHex(uuidBytes);

            //Here is your UUID
            String uuid = hexString.substring(0,8) + "-" +
                    hexString.substring(8,12) + "-" +
                    hexString.substring(12,16) + "-" +
                    hexString.substring(16,20) + "-" +
                    hexString.substring(20,32);

            //Here is your Major value
            int major = (scanRecord[startByte + 20] & 0xff) * 0x100 + (scanRecord[startByte + 21] & 0xff);

            //Here is your Minor value
            int minor = (scanRecord[startByte + 22] & 0xff) * 0x100 + (scanRecord[startByte + 23] & 0xff);

            if (major == 1) {
                RelativeLayout hai = (RelativeLayout) findViewById(R.id.hai);
                hai.setBackgroundColor(Color.YELLOW);

            }
            if (major == 2) {
                RelativeLayout hai = (RelativeLayout) findViewById(R.id.hai);
                hai.setBackgroundColor(Color.RED);

            }


        }


    }


};


private static String bytesToHex(byte[] bytes) {
    final char[] hexArray = "0123456789ABCDEF".tochararray();
    char[] hexChars = new char[bytes.length * 2];
    for (int j = 0; j < bytes.length; j++) {
        int v = bytes[j] & 0xFF;
        hexChars[j * 2] = hexArray[v >>> 4];
        hexChars[j * 2 + 1] = hexArray[v & 0x0F];
    }
    return new String(hexChars);
}

public void proceed() {
    boolean scanning = true;

    mBluetoothAdapter.startLeScan(mLeScanCallback);


    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        //  @Override
        public void run() {
            mBluetoothAdapter.stopLeScan(mLeScanCallback);


        }
    },50000000);

}

}

如何让应用程序循环扫描?

解决方法

如果“通过循环扫描?”你的意思是检测所有附近的广播设备,你已经完成了.代码行:

mBluetoothAdapter.startLeScan(mLeScanCallback)

导致扫描开始.在扫描期间,将在发现每个广播设备时调用回调“mLeScanCallback”.扫描将一直有效,直到

mBluetoothAdapter.stopScan(mLeScanCallback)

叫做.在你的情况下,这将在很长一段时间后被调用:50000000毫秒.

也许您在该区域只有1个广播设备,因此您在测试时只能获得1个回调.

Android Sdk在Android Studio中的集成

Android Sdk在Android Studio中的集成

什么是sdk集成在 android中意味着什么.我搜索了很多关于sdk集成但没有找到一个简单的答案来理解它.

解决方法

首先我们需要知道什么是 SDK? SDK是一个软件开发工具包.有许多SDK,如 Google Map SDK,Facebook SDK,Twitter SDK等.现在如果你想制作一个能够在Facebook或Twitter上分享内容的Android应用程序,那么你必须为你的应用程序需要facebook或twitter SDK.在您的应用程序中使用其他一些sdk称为Facebook SDK或Twitter SDK与android集成.另一方面如果  你想制作一个能够使用谷歌地图的ios应用程序,那么你需要将Google Map SDK与你的ios应用程序集成.这称为SDK集成….就是这样.谢谢

Android Studio软件技术基础 —Android项目描述---1-类的概念-android studio 组件属性-+标志-Android Studio 连接真机不识别其他途径

Android Studio软件技术基础 —Android项目描述---1-类的概念-android studio 组件属性-+标志-Android Studio 连接真机不识别其他途径

版权声明:本文为博主原创文章,未经博主允许不得转载, 微信公众号『醉翁猫咪』特约作者

学习android对我来说,就是兴趣,所以我以自己的兴趣写出的文章,希望各位多多支持!多多点赞,评论讨论加关注。

最近有点忙碌,对于我来说,学习Android开发,是对于我的考验,最近一位大佬发给我一道题目,我既然无力解决,所以我也要加把劲了。

学习android的同学,一定要对java有所了解,再来学习。

android 类的概念 究竟什么类呢?

类的定义

定义的是一个类,把一个类实例话就生成了一个对象,这样讲你能明白么?对象就是你从这个类生成的变量。你用的是一个对象变量,而这个对象变量是根据你定义的类来生成的。(明白?,不明白?)

类(Class)实际上是对某种类型的对象变量和方法的原型。所以说类是从一些具有相同属性或功能的具体实例,抽象出共有的一些属性的,自定义抽象数据类型。(明白?不明白?)

重点 类,那么就让我们想象一下,把类想象成我们拿的手机,如果用java来描述,你会吗?是不是,如下表达:public class Mobile {….} 是不是这样呢? 类class 想象成手机就是 Mobile ,那么这里的 Mobile 是什么用呢? 这里的 Mobile 是一个抽象的概念,既是 Mobile 还没有定义对吧。在你们学习的java中,应该是

public class Mobile{ private Button mCallButton;
private String mPhoneNumber; protected void call(String phoneNumber){....}

这里的private是私有的意思,就是自己用吧,要不你看看书现在,理解一下private,定义了两个变量,就是手机有打电话的功能,Call(打),还有拨电话号码的功能,类就是这样的,定义什么对象,就定义什么属性即变量。

如果不同类型的手机各不相同,如何拨电话号码,此时可以用上Abstract:

public abstract class Mobile {//一个抽象类 protected Button callButton;//至少有一个打电话的按钮 protected String mPhoneNumber;//至少有能显示电话号码拨号盘 protected abstract boolean call(String phoneNumber); //没有实现拨电话号码的抽象方法

注意了:定义了抽象类,那么方法要加抽象方法。

android studio 组件属性 android:layout_width和android:layout_height属性

几乎每类组件都需要android:layout_width和android:layout_height属性

match_parent:视图与其父视图大小相同,wrap_content:视图将根据其内容自动调整大小。

根LinearLayout组件均为match_parent,其他界面布局中的组件 均被设置为wrap_content。

android:orientation属性 android:orientation属性决定了子组件是水平放置还是垂直放置。

android:text属性 android:text属性指定组件显示的文字内容。是对字符串资源(string resources)的引用。

从布局XML到视图对象 想知道XML元素是如何转换为视图对象的吗?答案就在于你定义的类中哦。

类中Activity子类的实例创建后,onCreate(Bundle)方法将会被调用。

public class QuizActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_quiz); } }

资源 布局是一种资源,如XML文件、图像文件以及音频文件等。

从Android视图切换到Project视图 app/build/generated/source/r/debug目录的内容,警告,不要改变它。那好像是R.java。

+标志 对了,这+是创建资源ID,对字符串只是做了引用。

Android Studio 连接真机不识别其他途径 连不上的原因有以下几种:

  1. 手机设置问题。
  2. 数据线问题。
  3. 是否下载了对应手机版本的SDK。

喜欢本文的朋友们,欢迎长按下图关注订阅号醉翁猫咪,收看更多精彩内容 输入图片说明

android-studio – 一个奇怪的领域出现在android studio中

android-studio – 一个奇怪的领域出现在android studio中

我有一个pojo课

运行此代码

Field[] fields = clazz.getDeclaredFields();

我在Android Studio IDE下有一个字段:

它的类型是接口com.android.tools.fd.runtime.IncrementalChange
它的名字是$change

我的Android Studio版本是2.0预览版4

the pojo class which i definded by myself didn’t have $change field

当我在eclipse中运行代码时,它正常工作.

这个领域来自哪里?
我怎么能避免这个领域,Android Studio中有一些设置吗?

解决方法

我们可以通过使用合成修改器检查来解决此问题,而不是关闭即时运行. ‘com.android.tools.fd.runtime.IncrementalChange’是合成的,因此我们可以使用isSynthetc方法检查该字段是否是合成的.
Field[] fields = objClass.getFields();
for (Field field : fields) {
            String name = field.getName();
            Object value;

            if(field.isSynthetic()){
                continue;
            }
          //add your code here
            }

android-studio – 任何人都可以在android studio中使用chromecast android示例吗?

android-studio – 任何人都可以在android studio中使用chromecast android示例吗?

我有一个可怕的时间试图让这些加载没有错误.支持框架失败或转换api.任何人都有可重复的方法?

github示例说“即将推出”加载到android studio中.

解决方法

我没有转换其中一个测试项目,但我已经能够创建一个与chromecast设备一起使用的新项目.

>首先创建一个新项目.
>在应用程序模块文件夹的根目录中创建一个libs文件夹
>从Chromecast SDK下载中将GoogleCastSdkAndroid.jar文件复制到您的libs文件夹中.
>在应用程序模块build.gradle文件中,更新构建脚本底部的依赖项,如下所示.

dependencies {
    compile "com.android.support:appcompat-v7:18.0.+"
    compile "com.android.support:mediarouter-v7:18.0.+"
    compile files(''libs/GoogleCastSdkandroid.jar'')
}

您应该好好使用强制转换代码所需的所有外部依赖项.不要忘记打开SDK管理器并确保安装并更新了Android SDK工具.

为了使用示例应用程序执行上述方法,您必须将它们转换为gradle构建系统.因为我是新手,所以我无法帮助你.

祝好运

关于在android studio中扫描ble模块(蓝牙4.0)android 蓝牙扫描方法 多次的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Android Sdk在Android Studio中的集成、Android Studio软件技术基础 —Android项目描述---1-类的概念-android studio 组件属性-+标志-Android Studio 连接真机不识别其他途径、android-studio – 一个奇怪的领域出现在android studio中、android-studio – 任何人都可以在android studio中使用chromecast android示例吗?等相关知识的信息别忘了在本站进行查找喔。

本文标签: