Bu site tamamen kendini tatmin amacıyla kurulmuştur. İçerik hoşuna gitmediyse kapı sağ üst köşede bilgine..
when you try your best but you don't succeed
when you get what you want but not what you need
when you feel so tired but you can't sleep
stuck in reverse
banner
 

APK phone state sample

17.07.2015

package com.varma.samples.phonestatesample;

import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.telephony.CellLocation;
import android.telephony.NeighboringCellInfo;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
import android.telephony.gsm.GsmCellLocation;
import android.util.Log;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;

public class PhoneStateSample extends Activity {
        
        private static final String APP_NAME = "SignalLevelSample";
        private static final int EXCELLENT_LEVEL = 75;
        private static final int GOOD_LEVEL = 50;
        private static final int MODERATE_LEVEL = 25;
        private static final int WEAK_LEVEL = 0;
        
        private static final int INFO_SERVICE_STATE_INDEX = 0;
        private static final int INFO_CELL_LOCATION_INDEX = 1;
        private static final int INFO_CALL_STATE_INDEX = 2;
        private static final int INFO_CONNECTION_STATE_INDEX = 3;
        private static final int INFO_SIGNAL_LEVEL_INDEX = 4;
        private static final int INFO_SIGNAL_LEVEL_INFO_INDEX = 5;
        private static final int INFO_DATA_DIRECTION_INDEX = 6;
        private static final int INFO_DEVICE_INFO_INDEX = 7;
        
        private static final int[] info_ids= {
                R.id.serviceState_info,
                R.id.cellLocation_info,
                R.id.callState_info,
                R.id.connectionState_info,
                R.id.signalLevel,
                R.id.signalLevelInfo,
                R.id.dataDirection,
                R.id.device_info
        };
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        startSignalLevelListener();
        displayTelephonyInfo();
    }
    
    
    @Override
        protected void onPause()
        {
                super.onPause();
                
                stopListening();
        }

        @Override
        protected void onResume()
        {
                super.onResume();
                
                startSignalLevelListener();
        }
        
        @Override
        protected void onDestroy()
        {
                stopListening();
                
                super.onDestroy();
        }

        private void setTextViewText(int id,String text) {
                ((TextView)findViewById(id)).setText(text);
        }
        
        private void setSignalLevel(int id,int infoid,int level){
                int progress = (int) ((((float)level)/31.0) * 100);
                String signalLevelString = getSignalLevelString(progress);
                
                ((ProgressBar)findViewById(id)).setProgress(progress);
                ((TextView)findViewById(infoid)).setText(signalLevelString);
                
                Log.i("signalLevel ","" + progress);
        }
        
        private String getSignalLevelString(int level) {
                String signalLevelString = "Weak";
                
                if(level > EXCELLENT_LEVEL)             signalLevelString = "Excellent";
                else if(level > GOOD_LEVEL)             signalLevelString = "Good";
                else if(level > MODERATE_LEVEL) signalLevelString = "Moderate";
                else if(level > WEAK_LEVEL)             signalLevelString = "Weak";
                
                return signalLevelString;
        }

        private void stopListening(){
                TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
                
                tm.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
        }
        
        private void setDataDirection(int id, int direction){
                int resid = getDataDirectionRes(direction);
                
                ((ImageView)findViewById(id)).setImageResource(resid);
        }
        
        private int getDataDirectionRes(int direction){
                int resid = R.drawable.data_none;
                
                switch(direction)
                {
                        case TelephonyManager.DATA_ACTIVITY_IN:         resid = R.drawable.data_in; break;
                        case TelephonyManager.DATA_ACTIVITY_OUT:        resid = R.drawable.data_out; break;
                        case TelephonyManager.DATA_ACTIVITY_INOUT:      resid = R.drawable.data_both; break;
                        case TelephonyManager.DATA_ACTIVITY_NONE:       resid = R.drawable.data_none; break;
                        default:                                                                        resid = R.drawable.data_none; break;
                }
                
                return resid;
        }

        private void startSignalLevelListener() {
        TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
        int events = PhoneStateListener.LISTEN_SIGNAL_STRENGTH |
                                 PhoneStateListener.LISTEN_DATA_ACTIVITY |
                                 PhoneStateListener.LISTEN_CELL_LOCATION |
                                 PhoneStateListener.LISTEN_CALL_STATE |
                                 PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR |
                                 PhoneStateListener.LISTEN_DATA_CONNECTION_STATE |
                                 PhoneStateListener.LISTEN_MESSAGE_WAITING_INDICATOR |
                                 PhoneStateListener.LISTEN_SERVICE_STATE;
        
        tm.listen(phoneStateListener, events);
    }
        
        private void displayTelephonyInfo(){
                TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
                GsmCellLocation loc = (GsmCellLocation) tm.getCellLocation();
                
                int cellid = loc.getCid();
                int lac = loc.getLac();
                
                String deviceid = tm.getDeviceId();
                String phonenumber = tm.getLine1Number();
                String softwareversion = tm.getDeviceSoftwareVersion();
                String operatorname = tm.getNetworkOperatorName();
                String simcountrycode = tm.getSimCountryIso();
                String simoperator = tm.getSimOperatorName();
                String simserialno = tm.getSimSerialNumber();
                String subscriberid = tm.getSubscriberId();
                String networktype = getNetworkTypeString(tm.getNetworkType());
                String phonetype = getPhoneTypeString(tm.getPhoneType());
                
                logString("CellID: " + cellid);
                logString("LAC: " + lac);
                logString("Device ID: " + deviceid);
                logString("Phone Number: " + phonenumber);
                logString("Software Version: " + softwareversion);
                logString("Operator Name: " + operatorname);
                logString("SIM Country Code: " + simcountrycode);
                logString("SIM Operator: " + simoperator);
                logString("SIM Serial No.: " + simserialno);
                logString("Sibscriber ID: " + subscriberid);
                
                String deviceinfo = "";
                
                deviceinfo += ("CellID: " + cellid + "\n");
                deviceinfo += ("LAC: " + lac + "\n");
                deviceinfo += ("Device ID: " + deviceid + "\n");
                deviceinfo += ("Phone Number: " + phonenumber + "\n");
                deviceinfo += ("Software Version: " + softwareversion + "\n");
                deviceinfo += ("Operator Name: " + operatorname + "\n");
                deviceinfo += ("SIM Country Code: " + simcountrycode + "\n");
                deviceinfo += ("SIM Operator: " + simoperator + "\n");
                deviceinfo += ("SIM Serial No.: " + simserialno + "\n");
                deviceinfo += ("Subscriber ID: " + subscriberid + "\n");
                deviceinfo += ("Network Type: " + networktype + "\n");
                deviceinfo += ("Phone Type: " + phonetype + "\n");
                
                List<NeighboringCellInfo> cellinfo = tm.getNeighboringCellInfo();
                
                if(null != cellinfo){
                        for(NeighboringCellInfo info: cellinfo){
                                deviceinfo += ("\tCellID: " + info.getCid() + ", RSSI: " + info.getRssi() + "\n");
                        }
                }
                
                setTextViewText(info_ids[INFO_DEVICE_INFO_INDEX],deviceinfo);
        }
    
        private String getNetworkTypeString(int type){
                String typeString = "Unknown";
                
                switch(type)
                {
                        case TelephonyManager.NETWORK_TYPE_EDGE:        typeString = "EDGE"; break;
                        case TelephonyManager.NETWORK_TYPE_GPRS:        typeString = "GPRS"; break;
                        case TelephonyManager.NETWORK_TYPE_UMTS:        typeString = "UMTS"; break;
                        default:                                                                        typeString = "UNKNOWN"; break;
                }
                
                return typeString;
        }
        
        private String getPhoneTypeString(int type){
                String typeString = "Unknown";
                
                switch(type)
                {
                        case TelephonyManager.PHONE_TYPE_GSM:   typeString = "GSM"; break;
                        case TelephonyManager.PHONE_TYPE_NONE:  typeString = "UNKNOWN"; break;
                        default:                                                                typeString = "UNKNOWN"; break;
                }
                
                return typeString;
        }
        
        private int logString(String message) {
                return Log.i(APP_NAME,message);
        }
        
    private final PhoneStateListener phoneStateListener = new PhoneStateListener(){

                @Override
                public void onCallForwardingIndicatorChanged(boolean cfi)
                {
                        Log.i(APP_NAME, "onCallForwardingIndicatorChanged " + cfi);
                         
                        super.onCallForwardingIndicatorChanged(cfi);
                }

                @Override
                public void onCallStateChanged(int state, String incomingNumber)
                {
                        String callState = "UNKNOWN";
                        
                        switch(state)
                        {
                                case TelephonyManager.CALL_STATE_IDLE:          callState = "IDLE"; break;
                                case TelephonyManager.CALL_STATE_RINGING:       callState = "Ringing (" + incomingNumber + ")"; break;
                                case TelephonyManager.CALL_STATE_OFFHOOK:       callState = "Offhook"; break;
                        }
                        
                        setTextViewText(info_ids[INFO_CALL_STATE_INDEX],callState);
                        
                        Log.i(APP_NAME, "onCallStateChanged " + callState);
                        
                        super.onCallStateChanged(state, incomingNumber);
                }

                @Override
                public void onCellLocationChanged(CellLocation location)
                {
                        String locationString = location.toString();
                        
                        setTextViewText(info_ids[INFO_CELL_LOCATION_INDEX],locationString);
                        
                        Log.i(APP_NAME, "onCellLocationChanged " + locationString);
                        
                        super.onCellLocationChanged(location);
                }

                @Override
                public void onDataActivity(int direction)
                {
                        String directionString = "none";
                        
                        switch(direction)
                        {
                                case TelephonyManager.DATA_ACTIVITY_IN:         directionString = "IN"; break;
                                case TelephonyManager.DATA_ACTIVITY_OUT:        directionString = "OUT"; break;
                                case TelephonyManager.DATA_ACTIVITY_INOUT:      directionString = "INOUT"; break;
                                case TelephonyManager.DATA_ACTIVITY_NONE:       directionString = "NONE"; break;
                                default:                                                                        directionString = "UNKNOWN: " + direction; break;
                        }
                        
                        setDataDirection(info_ids[INFO_DATA_DIRECTION_INDEX],direction);
                        
                        Log.i(APP_NAME, "onDataActivity " + directionString);
                        
                        super.onDataActivity(direction);
                }

                @Override
                public void onDataConnectionStateChanged(int state)
                {
                        String connectionState = "Unknown";
                        
                        switch(state)
                        {
                                case TelephonyManager.DATA_CONNECTED:           connectionState = "Connected"; break;
                                case TelephonyManager.DATA_CONNECTING:          connectionState = "Connecting"; break;
                                case TelephonyManager.DATA_DISCONNECTED:        connectionState = "Disconnected"; break;
                                case TelephonyManager.DATA_SUSPENDED:           connectionState = "Suspended"; break;
                                default:                                                                        connectionState = "Unknown: " + state; break;
                        }
                        
                        setTextViewText(info_ids[INFO_CONNECTION_STATE_INDEX],connectionState);
                        
                        Log.i(APP_NAME, "onDataConnectionStateChanged " + connectionState);
                        
                        super.onDataConnectionStateChanged(state);
                }

                @Override
                public void onMessageWaitingIndicatorChanged(boolean mwi)
                {
                        Log.i(APP_NAME, "onMessageWaitingIndicatorChanged " + mwi);
                        
                        super.onMessageWaitingIndicatorChanged(mwi);
                }

                @Override
                public void onServiceStateChanged(ServiceState serviceState)
                {
                        String serviceStateString = "UNKNOWN";
                        
                        switch(serviceState.getState())
                        {
                                case ServiceState.STATE_IN_SERVICE:             serviceStateString = "IN SERVICE"; break;
                                case ServiceState.STATE_EMERGENCY_ONLY:         serviceStateString = "EMERGENCY ONLY"; break;
                                case ServiceState.STATE_OUT_OF_SERVICE:         serviceStateString = "OUT OF SERVICE"; break;
                                case ServiceState.STATE_POWER_OFF:                      serviceStateString = "POWER OFF"; break;
                                default:                                                                        serviceStateString = "UNKNOWN"; break;
                        }
                        
                        setTextViewText(info_ids[INFO_SERVICE_STATE_INDEX],serviceStateString);
                        
                        Log.i(APP_NAME, "onServiceStateChanged " + serviceStateString);
                        
                        super.onServiceStateChanged(serviceState);
                }

                @Override
                public void onSignalStrengthChanged(int asu)
                {
                        Log.i(APP_NAME, "onSignalStrengthChanged " + asu);
                        
                        setSignalLevel(info_ids[INFO_SIGNAL_LEVEL_INDEX],info_ids[INFO_SIGNAL_LEVEL_INFO_INDEX],asu);
                        
                        super.onSignalStrengthChanged(asu);
                }
    };
}

Gösterim : 791
Aşağıdaki formu kullanarak yorum yazabilirsiniz