1. 程式人生 > >android-獲取手機訊號強度(2)

android-獲取手機訊號強度(2)

1.mainactivity

package com.npsmaster.phoneinfo;

import android.content.Context;
import android.os.Message;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.telephony.CellInfo;
import android.telephony.CellInfoGsm;
import android.telephony.CellInfoLte;
import android.telephony.CellInfoWcdma;
import android.telephony.PhoneStateListener;
import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
import android.telephony.gsm.GsmCellLocation;
import android.widget.TextView;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.OrientationHelper;
import android.support.v7.widget.RecyclerView;

import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class MainActivity extends AppCompatActivity
{
    public static final int NP_CELL_INFO_UPDATE = 1001;
    private PhoneInfoThread phoneInfoThread;
    public Handler mMainHandler;
    // for current
    public  PhoneGeneralInfo phoneGeneralInfo;
    public  CellGeneralInfo serverCellInfo;
    //for history
    private List<CellGeneralInfo> HistoryServerCellList;
    private CellnfoRecycleViewAdapter historyRecycleViewAdapter;
    private RecyclerView historyrecyclerView;
    TelephonyManager phoneManager ;
    private MyPhoneStateListener myPhoneStateListener;

    void InitProcessThread()
    {
        mMainHandler = new Handler()
        {
            @Override
            public void handleMessage(Message msg)
            {
                if(msg.what == NP_CELL_INFO_UPDATE)
                {
                    Bundle bundle = msg.getData();
                    TextView tvTime = (TextView)findViewById(R.id.tvTimeleaps);
                    Date now = new Date();
                    SimpleDateFormat formatter =   new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
                    tvTime.setText(formatter.format(now));
                    historyRecycleViewAdapter.notifyDataSetChanged();

                    TextView tvDeviceId = (TextView)findViewById(R.id.tvDeviceId);
                    tvDeviceId.setText("DeviceId:" + phoneGeneralInfo.deviceId);

                    TextView tvRatType = (TextView)findViewById(R.id.tvRatType);
                    tvRatType.setText("RatType:"+phoneGeneralInfo.ratType);

                    TextView tvMnc = (TextView)findViewById(R.id.tMnc);
                    tvMnc.setText("Mnc:"+phoneGeneralInfo.mnc);

                    TextView tvMcc = (TextView)findViewById(R.id.tvMcc);
                    tvMcc.setText("Mcc:"+phoneGeneralInfo.mcc);

                    TextView tvOperatorName = (TextView)findViewById(R.id.tvOperaterName);
                    tvOperatorName.setText("Operator:"+phoneGeneralInfo.operaterName);

                    TextView tvSdk = (TextView)findViewById(R.id.tvSdk);
                    tvSdk.setText("Sdk:"+phoneGeneralInfo.sdk);

                    TextView tvImsi = (TextView)findViewById(R.id.tvImsi);
                    tvImsi.setText("Imsi:"+phoneGeneralInfo.Imsi);

                    TextView tvSerialNum = (TextView)findViewById(R.id.tvSerialNum);
                    tvSerialNum.setText("SN:"+phoneGeneralInfo.serialNumber);

                    TextView tvModel = (TextView)findViewById(R.id.tvModel);
                    tvModel.setText("Model:" + phoneGeneralInfo.phoneModel);

                    TextView tvSoftwareVersion = (TextView)findViewById(R.id.tvSoftware);
                    tvSoftwareVersion.setText("Version:" + phoneGeneralInfo.deviceSoftwareVersion);

                    TextView tvAllCellInfo = (TextView)findViewById(R.id.tvStaticInfoLableHistory);
                    tvAllCellInfo.setText("History cells list("+HistoryServerCellList.size()+")");

                }
                super.handleMessage(msg);
            }
        };

        phoneInfoThread = new PhoneInfoThread(MainActivity.this);
        phoneInfoThread.start();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        serverCellInfo = new CellGeneralInfo();
        phoneGeneralInfo = new PhoneGeneralInfo();
        myPhoneStateListener = new MyPhoneStateListener();
        phoneManager = (TelephonyManager)this.getSystemService(this.TELEPHONY_SERVICE);
        phoneManager.listen(myPhoneStateListener,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
        //
        HistoryServerCellList = new ArrayList<CellGeneralInfo>();
        historyrecyclerView = (RecyclerView)findViewById(R.id.historyrcv);
        LinearLayoutManager historylayoutManager = new LinearLayoutManager(this);
        historylayoutManager.setOrientation(OrientationHelper.VERTICAL);
        historyrecyclerView.setLayoutManager(historylayoutManager);
        historyRecycleViewAdapter  = new CellnfoRecycleViewAdapter(MainActivity.this,HistoryServerCellList);
        historyrecyclerView.setAdapter(historyRecycleViewAdapter);
        historyrecyclerView.setItemAnimator(new DefaultItemAnimator());

        InitProcessThread();

    }

    public void updateServerCellView()
    {
        TextView tvCellType = (TextView)findViewById(R.id.tvCellType);
        tvCellType.setText("Rat:" + serverCellInfo.type);

        TextView tvTac = (TextView)findViewById(R.id.tvTac);
        tvTac.setText("Tac:" + serverCellInfo.tac);

        TextView tvCellId = (TextView)findViewById(R.id.tvCellId);
        tvCellId.setText("Ci:" + serverCellInfo.CId);

        TextView tvPCI = (TextView)findViewById(R.id.tvPCI);
        tvPCI.setText("Pci:" + serverCellInfo.pci);

        TextView tvRsrp = (TextView)findViewById(R.id.tvRsrp);
        tvRsrp.setText("Rsrp:" + serverCellInfo.rsrp);

        TextView tvRsrq = (TextView)findViewById(R.id.tvRsrq);
        tvRsrq.setText("Rsrp:" + serverCellInfo.rsrq);

        TextView tvSINR = (TextView)findViewById(R.id.tvSINR);
        tvSINR.setText("Sinr:" + serverCellInfo.sinr);

        TextView tvCqi = (TextView)findViewById(R.id.tvCqi);
        tvCqi.setText("cqi:" + serverCellInfo.cqi);

        TextView tvGetCellType = (TextView)findViewById(R.id.tvGetCellType);
        tvGetCellType.setText("type:" + serverCellInfo.getInfoType);
    }

    class PhoneGeneralInfo
    {
        public String serialNumber;
        public String operaterName;
        public String operaterId;
        public String deviceId;
        public String deviceSoftwareVersion;
        public String Imsi;
        public String Imei;
        public int mnc;
        public int mcc;
        public int ratType= TelephonyManager.NETWORK_TYPE_UNKNOWN;
        public int phoneDatastate;
        public String phoneModel;
        public int sdk;
    }
    class CellGeneralInfo implements Cloneable
    {
        public int type;
        public int CId;
        public int lac;
        public int tac;
        public int psc;
        public int pci;
        public int RatType= TelephonyManager.NETWORK_TYPE_UNKNOWN;
        public int rsrp;
        public int rsrq;
        public int sinr;
        public int rssi;
        public int cqi;
        public int asulevel;
        public int getInfoType;
        public String time;

        @Override

        public Object clone()
        {
            CellGeneralInfo cellinfo = null;
            try
            {
                cellinfo = (CellGeneralInfo)super.clone();
            }
            catch(CloneNotSupportedException e)
            {
                e.printStackTrace();
            }
            return cellinfo;
        }
    }

    class MyPhoneStateListener extends PhoneStateListener
    {
        @Override
        public void  onSignalStrengthsChanged(SignalStrength signalStrength)
        {
            super.onSignalStrengthsChanged(signalStrength);
            getPhoneGeneralInfo();
            getServerCellInfo();
            if (phoneGeneralInfo.ratType == TelephonyManager.NETWORK_TYPE_LTE)
            {
                try {
                    serverCellInfo.rssi = (Integer) signalStrength.getClass().getMethod("getLteSignalStrength").invoke(signalStrength);
                    serverCellInfo.rsrp = (Integer) signalStrength.getClass().getMethod("getLteRsrp").invoke(signalStrength);
                    serverCellInfo.rsrq = (Integer) signalStrength.getClass().getMethod("getLteRsrq").invoke(signalStrength);
                    serverCellInfo.sinr = (Integer) signalStrength.getClass().getMethod("getLteRssnr").invoke(signalStrength);
                    serverCellInfo.cqi = (Integer) signalStrength.getClass().getMethod("getLteCqi").invoke(signalStrength);
                } catch (Exception e) {
                    e.printStackTrace();
                    return;
                }
            }
            else if (phoneGeneralInfo.ratType == TelephonyManager.NETWORK_TYPE_GSM)
            {
                try {
                    serverCellInfo.rssi = signalStrength.getGsmSignalStrength();
                    serverCellInfo.rsrp = (Integer) signalStrength.getClass().getMethod("getGsmDbm").invoke(signalStrength);
                    serverCellInfo.asulevel =(Integer) signalStrength.getClass().getMethod("getAsuLevel").invoke(signalStrength);
                } catch (Exception e) {
                    e.printStackTrace();
                    return;
                }
            }
            else if (phoneGeneralInfo.ratType == TelephonyManager.NETWORK_TYPE_TD_SCDMA)
            {
                try {
                    serverCellInfo.rssi = (Integer) signalStrength.getClass().getMethod("getTdScdmaLevel").invoke(signalStrength);
                    serverCellInfo.rsrp = (Integer) signalStrength.getClass().getMethod("getTdScdmaDbm").invoke(signalStrength);
                    serverCellInfo.asulevel =(Integer) signalStrength.getClass().getMethod("getAsuLevel").invoke(signalStrength);
                } catch (Exception e) {
                    e.printStackTrace();
                    return;
                }
            }
            Date now = new Date();
            SimpleDateFormat formatter =   new SimpleDateFormat("hh:mm:ss");
            serverCellInfo.time = formatter.format(now);
            updateHistoryCellList(serverCellInfo);
            updateServerCellView();
        }

        public void getPhoneGeneralInfo()
        {
            phoneGeneralInfo.operaterName = phoneManager.getNetworkOperatorName();
            phoneGeneralInfo.operaterId = phoneManager.getNetworkOperator();
            phoneGeneralInfo.mnc = Integer.parseInt(phoneGeneralInfo.operaterId.substring(0, 3));
            phoneGeneralInfo.mcc = Integer.parseInt(phoneGeneralInfo.operaterId.substring(3));
            phoneGeneralInfo.phoneDatastate = phoneManager.getDataState();
            phoneGeneralInfo.deviceId = phoneManager.getDeviceId();
            phoneGeneralInfo.Imei = phoneManager.getSimSerialNumber();
            phoneGeneralInfo.Imsi = phoneManager.getSubscriberId();
            phoneGeneralInfo.serialNumber = phoneManager.getSimSerialNumber();
            phoneGeneralInfo.deviceSoftwareVersion = android.os.Build.VERSION.RELEASE;
            phoneGeneralInfo.phoneModel = android.os.Build.MODEL;
            phoneGeneralInfo.ratType = phoneManager.getNetworkType();
            phoneGeneralInfo.sdk = android.os.Build.VERSION.SDK_INT;
        }

        public void getServerCellInfo()
        {
            try
            {
                List<CellInfo> allCellinfo;
                allCellinfo = phoneManager.getAllCellInfo();
                if (allCellinfo != null)
                {
                    CellInfo cellInfo = allCellinfo.get(0);
                    serverCellInfo.getInfoType = 1;
                    if (cellInfo instanceof CellInfoGsm)
                    {
                        CellInfoGsm cellInfoGsm = (CellInfoGsm) cellInfo;
                        serverCellInfo.CId = cellInfoGsm.getCellIdentity().getCid();
                        serverCellInfo.rsrp = cellInfoGsm.getCellSignalStrength().getDbm();
                        serverCellInfo.asulevel = cellInfoGsm.getCellSignalStrength().getAsuLevel();
                        serverCellInfo.lac = cellInfoGsm.getCellIdentity().getLac();
                        serverCellInfo.RatType = TelephonyManager.NETWORK_TYPE_GSM;
                    } else if (cellInfo instanceof CellInfoWcdma)
                    {
                        CellInfoWcdma cellInfoWcdma = (CellInfoWcdma) cellInfo;
                        serverCellInfo.CId = cellInfoWcdma.getCellIdentity().getCid();
                        serverCellInfo.psc = cellInfoWcdma.getCellIdentity().getPsc();
                        serverCellInfo.lac = cellInfoWcdma.getCellIdentity().getLac();
                        serverCellInfo.rsrp = cellInfoWcdma.getCellSignalStrength().getDbm();
                        serverCellInfo.asulevel = cellInfoWcdma.getCellSignalStrength().getAsuLevel();
                        serverCellInfo.RatType = TelephonyManager.NETWORK_TYPE_UMTS;
                    } else if (cellInfo instanceof CellInfoLte)
                    {
                        CellInfoLte cellInfoLte = (CellInfoLte) cellInfo;
                        serverCellInfo.CId = cellInfoLte.getCellIdentity().getCi();
                        serverCellInfo.pci = cellInfoLte.getCellIdentity().getPci();
                        serverCellInfo.tac = cellInfoLte.getCellIdentity().getTac();
                        serverCellInfo.rsrp = cellInfoLte.getCellSignalStrength().getDbm();
                        serverCellInfo.asulevel = cellInfoLte.getCellSignalStrength().getAsuLevel();
                        serverCellInfo.RatType = TelephonyManager.NETWORK_TYPE_LTE;
                    }
                }
                else
                //for older devices
                {
                    getServerCellInfoOnOlderDevices();
                }
            }
            catch(Exception e)
            {
                getServerCellInfoOnOlderDevices();
            }

        }
        void getServerCellInfoOnOlderDevices()
        {
            GsmCellLocation location = (GsmCellLocation) phoneManager.getCellLocation();
            serverCellInfo.getInfoType = 0;
            serverCellInfo.CId = location.getCid();
            serverCellInfo.tac = location.getLac();
            serverCellInfo.psc = location.getPsc();
            serverCellInfo.type = phoneGeneralInfo.ratType;
        }

        void updateHistoryCellList(CellGeneralInfo serverinfo)
        {
            CellGeneralInfo newcellInfo = (CellGeneralInfo)serverinfo.clone();
            HistoryServerCellList.add(newcellInfo);
        }
    }
     class PhoneInfoThread extends  Thread
    {
        private Context context;
        public int timecount;
        public PhoneInfoThread(Context context)
        {
            this.context = context;
            timecount = 0;
        }

        public void run()
        {
           while (true) {
                try {
                    timecount++;
                    Message message = new Message();
                    message.what = NP_CELL_INFO_UPDATE;
                    Bundle bundle = new Bundle();
                    bundle.putString("UPDATE", "UPDATE_TIME");
                    message.setData(bundle);
                    mMainHandler.sendMessage(message);
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

2. main layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.npsmaster.phoneinfo.MainActivity">
<!--start-->
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/childlayout"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true">
        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#ffcccccc"
            android:layout_margin="1dp">
            <!-- line1 -->
            <TableRow
                android:layout_width="match_parent"
                android:layout_height="20dp"
                android:background="#ffcccccc"
                android:layout_margin="0.5dp">

                <TextView
                    android:text="General Information"
                    android:layout_marginTop="5dp"
                    android:layout_width="0.0dp"
                    android:layout_height="20dp"
                    android:layout_weight="1"
                    android:id="@+id/tvStaticInfoLable">
                </TextView>
                <TextView
                    android:text="Time:"
                    android:layout_marginTop="5dp"
                    android:layout_width="0.0dp"
                    android:layout_height="20dp"
                    android:layout_weight="1"
                    android:id="@+id/tvTimeleaps">
                </TextView>
            </TableRow>
            <!--line2-->
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ffffcc99"
                android:layout_margin="0.5dp">
                <TextView
                    android:text="Operater:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:id="@+id/tvOperaterName"
                    android:textSize="12dp"
                    android:layout_weight="1"/>

                <TextView
                    android:text="RatType:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:id="@+id/tvRatType"
                    android:textSize="12dp"
                    android:layout_weight="1"/>
            </TableRow>
            <!-- line3 -->
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="match_parent"
                android:background="#ffffcc99"
                android:layout_margin="0.5dp">
                <TextView
                    android:text="mnc"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:textSize="12dp"
                    android:layout_weight="1"
                    android:id="@+id/tMnc" />
                <TextView
                    android:text="mcc:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:id="@+id/tvMcc"
                    android:textSize="12dp">
                </TextView>
            </TableRow>
            <!--line4-->
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ffffcc99"
                android:layout_margin="0.5dp">
                <TextView
                    android:text="Imsi"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvImsi" />
                <TextView
                    android:text="SDK:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:id="@+id/tvSdk"
                    android:layout_weight="1"
                    android:textSize="12dp"/>
            </TableRow>
            <!--line5-->
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ffffcc99"
                android:layout_margin="0.5dp">
                <TextView
                    android:text="DeviceId"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvDeviceId" />
                <TextView
                    android:text="SN:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvSerialNum"
                    android:layout_margin="0.5dp" />
            </TableRow>
            <!--line6-->
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ffffcc99"
                android:layout_margin="0.5dp">
                <TextView
                    android:text="software:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvSoftware" />
                <TextView
                    android:text="Model:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvModel"
                    android:layout_margin="0.5dp" />
            </TableRow>
            </TableLayout>
        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#ffcccccc"
            android:layout_margin="0dp">
            <!--line6-->
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ffcccccc"
                android:layout_margin="0.5dp">
                <TextView
                    android:text="Serving cell information"
                    android:layout_marginTop="5dp"
                    android:layout_width="match_parent"
                    android:layout_height="20dp"
                    android:id="@+id/tvStaticInfoLable">
                </TextView>
            </TableRow>
            <!-- title -->
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ffffcc99"
                android:layout_margin="0.5dp">
                <TextView
                    android:text="Rat:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvCellType" />
                <TextView
                    android:text="Tac:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvTac" />
                <TextView
                    android:text="CI:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvCellId" />
                </TableRow>
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ffffcc99"
                android:layout_margin="0.5dp">
                <TextView
                    android:text="Rsrp:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvRsrp" />
                <TextView
                    android:text="Rsrq:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvRsrq" />
                <TextView
                    android:text="SINR:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvSINR" />

            </TableRow>
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ffffcc99"
                android:layout_margin="0.5dp">
                <TextView
                    android:text="PCI/PSC:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvPCI" />
                <TextView
                    android:text="CQI:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvCqi" />
                <TextView
                    android:text="type:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvGetCellType"/>
                </TableRow>
        </TableLayout>
        <!-- history services cell info -->
        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#ffcccccc"
            android:layout_margin="1dp">
            <TextView
                android:text="History cells information:"
                android:layout_marginTop="5dp"
                android:layout_width="match_parent"
                android:layout_height="20dp"
                android:id="@+id/tvStaticInfoLableHistory">
            </TextView>
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#ffffcc99"
                android:layout_margin="0.5dp">
                <TextView
                    android:text="Type:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvhistoryCellType" />
                <TextView
                    android:text="Tac:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvhistoryTac" />
                <TextView
                    android:text="CI:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvhistoryCellId" />
                <TextView
                    android:text="PCI/PSC:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvhistoryPCI" />
                <TextView
                    android:text="dBm:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvhistorydBm" />
                <TextView
                    android:text="asulevel:"
                    android:layout_width="0.0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:textSize="12dp"
                    android:id="@+id/tvhistoryasuLevel " />
            </TableRow>
        </TableLayout>


        <android.support.v7.widget.RecyclerView
            android:scrollbars="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:divider="#ffff0000"
            android:dividerHeight="10dp"
            android:id="@+id/historyrcv"/>
    </LinearLayout>
</RelativeLayout>