当前位置: 代码迷 >> Android >> 关于一个ProgressDialog有关问题
  详细解决方案

关于一个ProgressDialog有关问题

热度:12   发布时间:2016-05-01 14:46:09.0
求助 关于一个ProgressDialog问题
先看代码再说问题
Java code
package com.keruikang.item01;import java.io.IOException;import java.io.InputStream;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List;import java.util.UUID;import android.app.ListActivity;import android.app.ProgressDialog;import android.bluetooth.BluetoothAdapter;import android.bluetooth.BluetoothDevice;import android.bluetooth.BluetoothSocket;import android.content.BroadcastReceiver;import android.content.Context;import android.content.DialogInterface;import android.content.DialogInterface.OnDismissListener;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.os.Handler;import android.util.Log;import android.view.View;import android.view.WindowManager;import android.widget.ArrayAdapter;import android.widget.ListView;public class DiscoveryActivity extends ListActivity {    private Handler _handler = new Handler();    /* 取得默认的蓝牙适配器 */    private BluetoothAdapter _bluetooth = BluetoothAdapter.getDefaultAdapter();    /* 用来存储搜索到的蓝牙设备 */    private List<BluetoothDevice> _devices = new ArrayList<BluetoothDevice>();        public static final UUID MyUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");    public static BluetoothSocket btSocket;    private ProgressDialog pg = null;    public static InputStream fis;    /* 是否完成搜索 */    private volatile boolean _discoveryFinished;    // 启动一个进程开始搜索    public Runnable _discoveryWorkder = new Runnable() {        public void run() {            /* 开始搜索 */            _bluetooth.startDiscovery();            for (;;) {                if (_discoveryFinished) {                    break;                }                try {                    Thread.sleep(100);                } catch (InterruptedException e) {                }            }        }    };    // 搜索设备的广播监听器    private BroadcastReceiver _foundReceiver = new BroadcastReceiver() {        public void onReceive(Context context, Intent intent) {            /* 从intent中取得搜索结果数据 */            BluetoothDevice device = intent                    .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);            // 只添加相应的设备            if (device.getName().equals("creative wireless")) {                _devices.add(device);            }            // /* 显示列表 */            showDevices();        }    };    private BroadcastReceiver _discoveryReceiver = new BroadcastReceiver() {        @Override        public void onReceive(Context context, Intent intent) {            /* 卸载注册的接收器 */            unregisterReceiver(_foundReceiver);            unregisterReceiver(this);            _discoveryFinished = true;        }    };    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,                WindowManager.LayoutParams.FLAG_BLUR_BEHIND);        setContentView(R.layout.discovery);        /* 注册接收器 */        IntentFilter discoveryFilter = new IntentFilter(                BluetoothAdapter.ACTION_DISCOVERY_FINISHED);        registerReceiver(_discoveryReceiver, discoveryFilter);        IntentFilter foundFilter = new IntentFilter(                BluetoothDevice.ACTION_FOUND);        registerReceiver(_foundReceiver, foundFilter);        /* 显示一个对话框,正在搜索蓝牙设备 */        SamplesUtils.indeterminate(DiscoveryActivity.this, _handler,                "设备搜索中...", _discoveryWorkder, new OnDismissListener() {                    public void onDismiss(DialogInterface dialog) {                        for (; _bluetooth.isDiscovering();) {                            _bluetooth.cancelDiscovery();                        }                        _discoveryFinished = true;                    }                }, true);    }    /* 显示列表 */    protected void showDevices() {        List<String> list = new ArrayList<String>();        if (_devices.size() == 0) {            StringBuilder b = new StringBuilder();                        b.append("没有搜索到设备");            list.add(b.toString());        } else {            for (int i = 0, size = _devices.size(); i < size; ++i) {                StringBuilder b = new StringBuilder();                BluetoothDevice d = _devices.get(i);                b.append(d.getAddress());                b.append('\n');                b.append(d.getName());                String s = b.toString();                list.add(s);            }        }        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,                android.R.layout.simple_list_item_1, list);        setListAdapter(adapter);    }    // 响应列表点击事件    protected void onListItemClick(ListView l, View v, int position, long id) {        String address = _devices.get(position).getAddress();        BluetoothDevice btDev = _bluetooth.getRemoteDevice(address);        pg = new ProgressDialog(DiscoveryActivity.this);        pg.setTitle("连接中");        pg.setMessage("请等待...");        pg.show();        try {            // Boolean returnValue = false;            switch (btDev.getBondState()) {            case BluetoothDevice.BOND_NONE:                // 利用反射方法调用BluetoothDevice.createBond(BluetoothDevice                // remoteDevice);                Method createBondMethod = BluetoothDevice.class                        .getMethod("createBond");                Log.d("BlueToothTestActivity", "开始配对");                createBondMethod.invoke(btDev);                break;            case BluetoothDevice.BOND_BONDED:                btSocket = btDev.createRfcommSocketToServiceRecord(MyUUID);                                System.out.println("开始连接     " + btDev.getAddress());                                btSocket.connect();                                System.out.println("连接完成,进度条消失");                pg.dismiss();                                fis = btSocket.getInputStream();                MainActivity.setfis(fis);                finish();                break;            }        } catch (Exception e) {            Log.d("BlueToothTestActivity", "连接失败...");            e.printStackTrace();        }    }    public static InputStream ret_fis() {        return fis;    }    public static void Myquit() throws IOException{        fis.close();        btSocket.close();    }}