Android藍牙2.0SSP 4.0BLE 示例apk源碼下載及視頻 能收發十六進制或字符2.0靠近自動連接 4.0無需配對手機與串口模塊通信 OTG轉串口wifi串口

整理了 Android藍牙2.0SSP和4.0 BLE 所有示例apk及源碼下載及視頻 保證能收發十六進制或字符 有自動連接已經配對的設備 手機與串口模塊通信等,未公佈的源碼100一份。

注意:20190507關於android 6.0及後續系統搜不到藍牙SSP2.0設備模塊的原因及解決

在6.0版本前,使用藍牙功能,只需要配置下面的權限即可:

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

6.0及後續版本,使用藍牙掃描,還需要添加如下的權限,且該權限還需要在使用時動態申請:

<!-- Android6.0 藍牙掃描才需要-->

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

所以要使用藍牙SSP2.0設備模塊,總共要3條權限:

    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>

(APP提示允許打開藍牙和定位權限時,不要拒絕)

 

一、藍牙2.0SSP示例:(對應硬件模塊:匯承HC-05等 芯片CSR BC)

推薦:1.android藍牙2.0串口助手 收發十六進制/字符自動連接apk 鏈接: https://pan.baidu.com/s/1wD6t2-yOFET5GE9BaWA-2w 提取碼: y7gu 

2.BluetoothChat手機與串口模塊通信靠近自動連接2.0apk示例:鏈接: https://pan.baidu.com/s/1MEdcT-ImcveYytu8Mb79DQ  
提取碼:flk4 

3.控制車帶語音可自定義指令和按鍵名:鏈接: http://pan.baidu.com/s/1nuEeFVV 密碼: 16uq

4.BluetoothChat手機與手機 手機與串口模塊通信示例: http://pan.baidu.com/s/1dDTZdJj

5.工業控制應用ISwitch13 jscw定製 - 精簡版 -5.0胎壓檢測OK.apk  鏈接: http://pan.baidu.com/s/1c1IRNpQ 密碼: k58x

接收一個字節0-60之間

 6.智能體溫計apk: 鏈接: http://pan.baidu.com/s/1hsybiuC 密碼: g85c

通過藍牙接收,能記錄31天的溫度,並給出醫學健康建議。藍牙自動連接。
數據格式 比如36.98度對應十六進制03 06 09 08 固定爲四個字節

7.最新水鑽機項目藍牙綜合運用 鏈接: https://pan.baidu.com/s/1WJ2G-7rY2Thj6o_0bsymRw 提取碼: 55ak 

IOS示例:appstore下載

 

二、藍牙4.0 BLE示例:(對應硬件模塊:CC2541/CC2540 深圳博陸科 BLE CC41 ,匯承HC-08 藍牙模塊等 JDY-30/31/32 )

推薦:1.android藍牙4.0BLE串口助手 能收發十六進制或字符 無需密碼無需配對apk http://pan.baidu.com/s/1o8i5Iie

藍牙汽車搖控器自動連接帶學習功能帶密碼ble4.0 鏈接: https://pan.baidu.com/s/1bLv1OM 密碼: f3tr

(初始密碼123456)

2.博陸科官方源碼鏈接: http://pan.baidu.com/s/1c2No4A8 密碼: cbje

3.AMOMCU  http://pan.baidu.com/s/1boiqyzP

4.AmoMcu - 0.2精簡OK 鏈接: http://pan.baidu.com/s/1mhUMJw8 密碼: 4pap

5.AmoMcu -自定義名稱及指令版  通用版   鏈接: http://pan.baidu.com/s/1dEZeKTj 密碼: 2pnb

6.PO141103045 深圳博陸科 BLE CC41 BluetoothLeGatt.apk  http://pan.baidu.com/s/1o70QIO6

7.工業控制應用(Android藍牙串口工業控制軟件視頻演示-小黃人軟件 http://v.youku.com/v_show/id_XNzAwMTgxNzY0.html?from=y1.7-1.2) 示例apk:http://pan.baidu.com/s/1beoIia

8.有人USR-BLE100 BLE+SSP藍牙低功耗調試助手apk: https://pan.baidu.com/s/17yAcQCOGbjbvqPLXDsOZQQ

 IOS示例:appstore下載

JDY-30/31/32雙模方式,兩種都支持。

 

三、android OTG轉串口 USB轉串口 (硬件:對應FT232、cp2102芯片的USB轉串口線 )

鏈接: https://pan.baidu.com/s/1jI999Im 密碼: zjks (對應FT232 cp2102芯片的USB轉串口線 )

OTG能收發字符 打開關閉端口波特率設置等

鏈接: https://pan.baidu.com/s/1kVkT98j 密碼: uvg7 (對應CH34x,CH340芯片的USB轉串口線 )

 

四、android 串口serial轉串口(硬件:串口線與設備直連)

鏈接:  https://pan.baidu.com/s/1pL1Gult  密碼: 5wev

五、android WIFI串口助手(硬件:HC-22,Esp8266)局域網

鏈接:https://pan.baidu.com/s/1g3-BfBHngVuWeqRUbiMO8w 提取碼:81al 
 

 

package com.example.fileread2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;


import android.support.v7.app.ActionBarActivity;
import android.text.format.Time;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        save("12\r\n1234");
        Button btnLine=(Button)findViewById(R.id.button1);
        Button btnAll=(Button)findViewById(R.id.button2);
        final TextView dis = (TextView) findViewById(R.id.tv); // 得到數據顯示句柄
        btnLine.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				dis.setText(readFirstLine());
			}
		});
        btnAll.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				dis.setText(readAll());
			}
		});

    }
	public void save(String filecontent)  //位於/data/data/<package name>/files 
    {
		//Time t = new Time(); // or Time t=new Time("GMT+8"); 加上Time Zone資料。
		//t.setToNow(); // 取得系統時間。
		//String filename=String.format("%04d-%02d-%02d.txt", t.year,t.month+1,t.monthDay);
		String filename="視力記錄表.txt";
		  try {
	            if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
	            	File f2 = new File(Environment.getExternalStorageDirectory()+"/test/");
            	f2.mkdir();
            	//Toast.makeText(this,"卡"+f2.toString()+"/"+filename,Toast.LENGTH_SHORT).show();
            	//執行存儲sdcard方法
            
            	File f = new File(f2,filename);
            	FileOutputStream out = new FileOutputStream(f,true);
            	out.write(filecontent.getBytes("UTF-8"));
            }
            else{
            	//存儲到手機中,或提示
            	Toast.makeText(this,"無卡,保存到手機"+getFilesDir().toString()+"/"+filename,Toast.LENGTH_SHORT).show();
            	   FileOutputStream outStream=this.openFileOutput(filename,Context.MODE_APPEND); //模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。
                   outStream.write(filecontent.getBytes("UTF-8"));
                   outStream.close();
            }
            
        } catch (FileNotFoundException e) {
            return;
        }
        catch (IOException e){
            return ;
        }   
    }
    public String readAll()
    {
    	StringBuffer sb = new StringBuffer();
    	String filename="test.txt";
		  try {
	            if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
	            	File f2 = new File(Environment.getExternalStorageDirectory()+"/test/");
               
          	File f = new File(f2,filename);
        	BufferedReader br = new BufferedReader(new FileReader(f));
			String readline = "";
			
			while ((readline = br.readLine()) != null) {
			//	System.out.println("readline:" + readline);
				Log.d("chenhao", "chenhao"+"readline:" + readline);	
				sb.append(readline);
			}
			br.close();
          }
          else{
          	//存儲到手機中,或提示
          	Toast.makeText(this,"無卡"+getFilesDir().toString()+"/"+filename,Toast.LENGTH_SHORT).show();
          }
          
      } catch (FileNotFoundException e) {
          return "";
      }
      catch (IOException e){
          return "";
      } 
		  
			return "讀取成功:" + sb.toString();
	            	
    }
    public String readFirstLine()
    {  	
    	StringBuffer sb = new StringBuffer();
    	String filename="test.txt";
		  try {
	            if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
	            	File f2 = new File(Environment.getExternalStorageDirectory()+"/test/");
               
          	File f = new File(f2,filename);
        	BufferedReader br = new BufferedReader(new FileReader(f));
			String readline = "";
			readline = br.readLine();
		//	while ((readline = br.readLine()) != null) {
			//	System.out.println("readline:" + readline);
				Log.d("chenhao", "chenhao"+"readline:" + readline);	
				sb.append(readline);
		//	}
			br.close();
          }
          else{
          	//存儲到手機中,或提示
          	Toast.makeText(this,"無卡"+getFilesDir().toString()+"/"+filename,Toast.LENGTH_SHORT).show();
          }
          
      } catch (FileNotFoundException e) {
          return "沒有找到文件";
      }
      catch (IOException e){
          return "IO異常";
      } 
			return "首行讀取成功:" + sb.toString();
    	
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    
 	/**
 	 * 判斷SDCard是否存在 [當沒有外掛SD卡時,內置ROM也被識別爲存在sd卡]
 	 * 
 	 * @return
 	 */
 	public static boolean isSdCardExist() {
 		return Environment.getExternalStorageState().equals(
 				Environment.MEDIA_MOUNTED);
 	}
 	/**
 	 * 獲取SD卡根目錄路徑
 	 * 
 	 * @return
 	 */
 	public static String getSdCardPath() {
 		boolean exist = isSdCardExist();
 		String sdpath = "";
 		if (exist) {
 			sdpath = Environment.getExternalStorageDirectory()
 					.getAbsolutePath();
 		} else {
 			sdpath = "不適用";
 		}
 		return sdpath;

 	}
 	/**
 	 * 獲取默認的文件路徑
 	 * 
 	 * @return
 	 */
 	public static String getDefaultFilePath() {
 		String filepath = "";
 		File file = new File(Environment.getExternalStorageDirectory(),
 				"test.txt");
 		if (file.exists()) {
 			filepath = file.getAbsolutePath();
 		} else {
 			filepath = "不適用";
 		}
 		return filepath;
 	}
 	/*
 	public void readFileFS()  //使用FileInputStream讀取文件
 	{
         try {
     		File file = new File(Environment.getExternalStorageDirectory(),
     				"test.txt");
             FileInputStream is = new FileInputStream(file);
           
 			byte[] b = new byte[is.available()];
             is.read(b);
             String result = new String(b);
             System.out.println("讀取成功:"+result);
         } catch (Exception e) {
         	e.printStackTrace();
         }
 	}
 	*/
 	public void readFileBR() //使用BufferReader讀取文件
 	{
 		try {
 			File file = new File(Environment.getExternalStorageDirectory(),
 					"test.txt");
 			BufferedReader br = new BufferedReader(new FileReader(file));
 			String readline = "";
 			StringBuffer sb = new StringBuffer();
 			while ((readline = br.readLine()) != null) {
 				System.out.println("readline:" + readline);
 				sb.append(readline);
 			}
 			br.close();
 			System.out.println("讀取成功:" + sb.toString());
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
 	}
}

 

 

 

 

 

 

小黃人軟件淘寶旗艦店

程序源碼,定製專家手機:18910620895 旺旺:chenhao0568  QQ:345139427

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章