1.AndroidManifest.xml 加上權限
2./res/layout/activity_main.xml 放個Button
3.MainActivity.java
package com.terryyamg.bluetoothdatatransfertest;
import android.bluetooth.BluetoothAdapter;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static final int DISCOVER_DURATION = 300;
private static final int REQUEST_BLU = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btSend = (Button) findViewById(R.id.btSend);
btSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendViaBluetooth(v);
}
});
}
public void sendViaBluetooth(View v) {
BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter();
if (btAdapter == null) {
Toast.makeText(this, "裝置沒有藍芽", Toast.LENGTH_LONG).show();
} else {
enableBluetooth();
}
}
//啟動藍芽
public void enableBluetooth() {
Intent discoveryIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
//開啟藍芽時間
discoveryIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, DISCOVER_DURATION);
startActivityForResult(discoveryIntent, REQUEST_BLU);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == DISCOVER_DURATION && requestCode == REQUEST_BLU) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");//檔案類型
File file = new File(Environment.getExternalStorageDirectory(), "BluetoothTest.txt"); //建立傳送檔案名稱
String content = "Hello"; //文件內容
try {
FileOutputStream fop = new FileOutputStream(file);
if (!file.exists()) { // 如果檔案不存在,建立檔案
file.createNewFile();
}
byte[] contentInBytes = content.getBytes();// 取的字串內容bytes
fop.write(contentInBytes); // 輸出
fop.flush();
fop.close();
} catch (IOException e) {
e.printStackTrace();
}
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
PackageManager pm = getPackageManager();
List<ResolveInfo> appsList = pm.queryIntentActivities(intent, 0);
if (appsList.size() > 0) {
String packageName = null;
String className = null;
boolean found = false;
for (ResolveInfo info : appsList) {
packageName = info.activityInfo.packageName;
if (packageName.equals("com.android.bluetooth")) {
className = info.activityInfo.name;
found = true;
break;
}
}
if (!found) {
Toast.makeText(this, "沒有找到藍芽", Toast.LENGTH_LONG).show();
} else {
intent.setClassName(packageName, className);
startActivity(intent);
}
}
} else {
Toast.makeText(this, "取消", Toast.LENGTH_LONG).show();
}
}
}
檔案下載:
https://github.com/terryyamg/BluetoothDataTransferTest
參考連結:
https://www.youtube.com/watch?v=6hQ87u9v7SY











