android 局部刷新

想达到一种不刷新整个listview 只刷新信号强度这一行的。请各位牛人,帮忙解答,本人急切盼望这个人的出现。

 

 

package android.emou.activity.main.menu;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.emou.activity.R;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.telephony.PhoneStateListener;
import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
import android.telephony.gsm.GsmCellLocation;
import android.widget.SimpleAdapter;

/**
 * 
 * @author Administrator
 *
 */
public class PhonestateActivity extends ListActivity {
    TelephonyManager tm;
    //MyPhoneStateListener类的对象,即设置一个监听器对象
     MyPhoneStateListener MyListener;
     //asu
     int asuValue;
     //dBm
     int dBmValue;
     List<Map<String, Object>> list = null;
     GsmCellLocation gsmCellLocation;
     LocationManager locationManager;
     SimpleAdapter adapter;
     //经度
     double jingdu;
     //纬度
     double weidu;
     
        private Handler handler;
        
        private ProgressDialog loadingBar;
        
        private final static int FINISH = 1;
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         MyListener = new MyPhoneStateListener();
         tm= (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
         tm.listen(MyListener ,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
         gsmCellLocation=(GsmCellLocation) tm.getCellLocation();
//        updateUI();
        //初始化对象   
        
//        JSONObject lojsJsonObject=(JSONObject) getLocation();
//        try {
//            //纬度
//            weidu=lojsJsonObject.getDouble("latitude");
//            //经度
//             jingdu=lojsJsonObject.getDouble("longitude");
//        } catch (JSONException e) {
//            e.printStackTrace();
//        }
//         loadingBar = new ProgressDialog(this);
//            loadingBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
//            loadingBar.setTitle("请稍等");
//            loadingBar.setMessage("数据正在加载中...");
//            loadingBar.show();
//            handler = new Handler() {  
//                @Override
//                public void handleMessage(Message msg) {
//                    if(msg.what == FINISH){
//                        System.out.println("-----------------------------------------");
//                        loadingBar.dismiss();
//                    }
//                }
//            };
        
    }
    private void updateUI(){
        Thread thred = new Thread(){
            public void run() {
                changeView();
                handler.sendEmptyMessage(FINISH);
            }
        };
        thred.start();
    }    
    private void changeView(){
         adapter = new SimpleAdapter(this,getData(),R.layout.vlist,
                new String[]{"title","info","img"},
                new int[]{R.id.title,R.id.info});
         setListAdapter(adapter);
    }
    
    @Override  
    protected void onPause() {  
        super.onPause();  
        tm.listen(MyListener, PhoneStateListener.LISTEN_NONE);  
    }  
    @Override  
    protected void onResume() {  
        super.onResume();  
        tm.listen(MyListener,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);  
    }  
    private List<Map<String, Object>> getData() {
        list = new ArrayList<Map<String, Object>>();
        
        Map<String, Object>  SimOperatorNamemap = new HashMap<String, Object>();
        SimOperatorNamemap.put("title", "服务商名称");
        if (tm.getSubscriberId().substring(3, 5).equals("00")) {
            SimOperatorNamemap.put("info", "中国移动");
        }
        if (tm.getSubscriberId().substring(3, 5).equals("02")) {
            SimOperatorNamemap.put("info", "中国移动");
        }
        if (tm.getSubscriberId().substring(3, 5).equals("01")) {
            SimOperatorNamemap.put("info", "中国联通");
        }
        if (tm.getSubscriberId().substring(3, 5).equals("03")) {
            SimOperatorNamemap.put("info", "中国电信");
        }
        list.add(SimOperatorNamemap);
        Map<String, Object>     NetworkTypemap = new HashMap<String, Object>();
//        NETWORK_TYPE_UNKNOWN 网络类型未知 0
//         *          NETWORK_TYPE_GPRS     GPRS网络1
//         *          NETWORK_TYPE_EDGE     EDGE网络  2 
//         *         NETWORK_TYPE_UMTS     UMTS网络  3 
//         *         NETWORK_TYPE_HSDPA    HSDPA网络  8  
//         *         NETWORK_TYPE_HSUPA    HSUPA网络  9 
//         *         NETWORK_TYPE_HSPA     HSPA网络  10 
//         *         NETWORK_TYPE_CDMA     CDMA网络,IS95A 或 IS95B.  4 
//         *         NETWORK_TYPE_EVDO_0   EVDO网络, revision 0.  5 
//         *         NETWORK_TYPE_EVDO_A   EVDO网络, revision A.  6 
//         *         NETWORK_TYPE_1xRTT    1xRTT网络  7 
        NetworkTypemap.put("title", "网络类型");
        switch (tm.getNetworkType()) {
        case 0:
            NetworkTypemap.put("info", "未知");
            break;
        case 1:
            NetworkTypemap.put("info", "GPRS网络");
            break;
        case 2:
            NetworkTypemap.put("info", "EDGE网络");
            break;
        case 3:
            NetworkTypemap.put("info", " UMTS网络");
            break;
        case 4:
            NetworkTypemap.put("info", "DMA网络,IS95A 或 IS95B");
            break;
        case 5:
            NetworkTypemap.put("info", "EVDO网络, revision 0");
            break;
        case 6:
            NetworkTypemap.put("info", "EVDO网络, revision A");
        case 7:
            NetworkTypemap.put("info", "1xRTT网络 ");
            break;
        case 8:
            NetworkTypemap.put("info", " HSDPA网络");
            break;
        case 9:
            NetworkTypemap.put("info", "HSUPA网络");
            break;
        case 10:
            NetworkTypemap.put("info","HSPA网络");
        default:
            break;
        }
        list.add(NetworkTypemap);
        
        Map<String, Object>  asumap = new HashMap<String, Object>();
        asumap.put("title", "信号强度");
        asumap.put("info", String.valueOf(asuValue)+"asu"+"   "+String.valueOf(dBmValue)+"dBm" );
        list.add(asumap);
        
        Map<String, Object> cidMap=new HashMap<String, Object>();
        cidMap.put("title", "小区号");
        cidMap.put("info", gsmCellLocation.getCid());
        list.add(cidMap);
        
        Map<String, Object> lacMap=new HashMap<String, Object>();
        lacMap.put("title", "LAC号");
        lacMap.put("info", gsmCellLocation.getLac());
        list.add(lacMap);
        
        Map<String, Object> mccMap=new HashMap<String, Object>();
        mccMap.put("title", "MCC");
        mccMap.put("info", tm.getSubscriberId().substring(0,3));
        list.add(mccMap);
        
        Map<String, Object> mncMap=new HashMap<String, Object>();
        mncMap.put("title", "MNC");
        mncMap.put("info", tm.getSubscriberId().substring(3, 5));
        list.add(mncMap);
        
//        Map<String, Object> jingduMap=new HashMap<String, Object>();
//        jingduMap.put("title", "经度");
//        jingduMap.put("info",jingdu);
//        list.add(jingduMap);
//        
//        Map<String, Object> weiduMap=new HashMap<String, Object>();
//        weiduMap.put("title", "纬度");
//        weiduMap.put("info",weidu);
//        list.add(weiduMap);
        
        Map<String, Object> NetworkRoamingmap = new HashMap<String, Object>();
        NetworkRoamingmap.put("title", "漫游状态");
        if (tm.isNetworkRoaming()) {
            NetworkRoamingmap.put("info", "漫游");
        }else{
            NetworkRoamingmap.put("info", "非漫游");
        }
        list.add(NetworkRoamingmap);
        
        Map<String, Object> Line1Numbermap = new HashMap<String, Object>();
        Line1Numbermap.put("title", "手机号");
        if (tm.getLine1Number().equals("") || tm.getLine1Number()=="") {
            Line1Numbermap.put("info", "未知");
        }else{
            Line1Numbermap.put("info", tm.getLine1Number());
        }
        list.add(Line1Numbermap);
        
        Map<String, Object>  SimSerialNumbermap = new HashMap<String, Object>();
        SimSerialNumbermap.put("title", "sim卡序列号");
        SimSerialNumbermap.put("info", tm.getSimSerialNumber());
        list.add(SimSerialNumbermap);
        
        Map<String, Object>    xinghaomap=new HashMap<String, Object>();
        xinghaomap.put("title", "手机型号");
        xinghaomap.put("info", android.os.Build.MODEL);
        list.add(xinghaomap);
        
        Map<String, Object> androidvermap=new HashMap<String, Object>();
        androidvermap.put("title", "android版本号");
        androidvermap.put("info", android.os.Build.VERSION.RELEASE);
        list.add(androidvermap);
        
        Map<String, Object> DeviceIdmap = new HashMap<String, Object>();
        DeviceIdmap.put("title", "IMEI");
        DeviceIdmap.put("info", tm.getDeviceId());
        list.add(DeviceIdmap);
        
        Map<String, Object> imsiMap=new HashMap<String, Object>();
        imsiMap.put("title", "IMSI");
        imsiMap.put("info", tm.getSubscriberId());
        list.add(imsiMap);
        
        return list;
    }
    //监听器类   
     private class MyPhoneStateListener extends PhoneStateListener{  
        
                @Override  
                public void onSignalStrengthsChanged(SignalStrength signalStrength){  
                    super.onSignalStrengthsChanged(signalStrength);//调用超类的该方法,在网络信号变化时得到回答信号   
                    asuValue=signalStrength.getGsmSignalStrength();
                    dBmValue=-113+2*asuValue;
//                    getData().get(2).remove("info");
//                    getData().get(2).put("info",  String.valueOf(asuValue)+"asu"+"   "+String.valueOf(dBmValue)+"dBm");
//                       Map<String, Object>  asumap = new HashMap<String, Object>();
                    changeView();
                }  
          
            }  
     //获取位置的json串
     public Object getLocation()
     {
            
            TelephonyManager mTManager=null;
            mTManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
        
            GsmCellLocation gcl = (GsmCellLocation) mTManager.getCellLocation();
            int cid = gcl.getCid();
            int lac = gcl.getLac();
            int mcc = Integer.valueOf(mTManager.getNetworkOperator().substring(0,3));
            int mnc = Integer.valueOf(mTManager.getNetworkOperator().substring(3,5));
                        JSONObject jObject = new JSONObject();
                        try {
                            jObject.put("version", "1.1.0");
                            jObject.put("host", "maps.google.com");
                            jObject.put("request_address", true);
                            if (mcc == 460) 
                            {
                            jObject.put("address_language", "zh_CN");
                            } else {
                            jObject.put("address_language", "en_US");
                            }
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        

                        JSONArray jArray = new JSONArray();
                        JSONObject jData = new JSONObject();
                        try {
                            jData.put("cell_id", cid);
                            jData.put("location_area_code", lac);
                            jData.put("mobile_country_code", mcc);
                            jData.put("mobile_network_code", mnc);
                            jArray.put(jData);
                            jObject.put("cell_towers", jArray);
                            
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace(); 
                        }
                        DefaultHttpClient client = new DefaultHttpClient();
                        HttpPost post = new HttpPost("http://www.google.com/loc/json");
                        StringEntity se;
                        try {
                            System.out.println(jObject.toString());
                            se = new StringEntity(jObject.toString());
                            post.setEntity(se);
                            HttpResponse resp = client.execute(post);
                            BufferedReader br = null;
                            System.out.println("resp:"+resp.getStatusLine().getStatusCode());
                            if (resp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) 
                            {
                                br = new BufferedReader(new InputStreamReader(resp.getEntity().getContent()));
                            }
                            StringBuffer sb = new StringBuffer();
                            String result = br.readLine();
                            while (result != null) {
                            sb.append(result);
                            result = br.readLine();
                            }
                            JSONObject sbJsonObject=new JSONObject(sb.toString());
                            JSONObject lojsJsonObject=sbJsonObject.getJSONObject("location");
                            
                             return lojsJsonObject;
                        } catch (Exception e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                            return null;
                        }
     }
     
}

 

 

http://www.iteye.com/problems/77132

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值