com.sim2dial.dialer.StatusFragment.java Source code

Java tutorial

Introduction

Here is the source code for com.sim2dial.dialer.StatusFragment.java

Source

package com.sim2dial.dialer;

/*
 StatusFragment.java
 Copyright (C) 2012  Belledonne Communications, Grenoble, France
    
 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License
 as published by the Free Software Foundation; either version 2
 of the License, or (at your option) any later version.
    
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
    
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

import org.json.JSONException;
import org.json.JSONObject;
import org.linphone.core.LinphoneCall;
import org.linphone.core.LinphoneCallParams;
import org.linphone.core.LinphoneCallStats;
import org.linphone.core.LinphoneCore;
import org.linphone.core.LinphoneCore.MediaEncryption;
import org.linphone.core.LinphoneCore.RegistrationState;
import org.linphone.core.LinphoneProxyConfig;
import org.linphone.core.PayloadType;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TableLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.ns.kgraphicsengin.RemoteData;
import com.ns.kgraphicsengin.RemoteData.OnRemoteCompleated;
import com.ns.kgraphicsengin.RemoteData.RemoteProperty;
import com.sim2dial.dialer.ui.SlidingDrawer;
import com.sim2dial.dialer.ui.SlidingDrawer.OnDrawerOpenListener;

/**
 * @author Sylvain Berfini
 */
public class StatusFragment extends Fragment implements OnRemoteCompleated {
    private Handler mHandler = new Handler();
    private Handler refreshHandler = new Handler();
    //   private ImageView      statusText;
    public static TextView bal;
    private ImageView statusLed, callQuality, encryption;
    //   private ListView      sliderContentAccounts;
    //private TableLayout      callStats;
    // private SlidingDrawer drawer;
    // private LinearLayout allAccountsLed;
    private Runnable mCallQualityUpdater;
    private boolean isInCall, isAttached = false;

    private Toast zrtpToast;
    private CountDownTimer zrtpHack;
    private boolean hideZrtpToast = false;
    private Timer mTimer;
    private TimerTask mTask;
    StatusFragment instance;
    public TextView header;

    public StatusFragment instance() {
        if (instance != null)
            return instance;
        return null;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.status, container, false);

        header = (TextView) view.findViewById(R.id.header);
        //statusText = (ImageView) view.findViewById(R.id.home);
        statusLed = (ImageView) view.findViewById(R.id.statusLed);
        callQuality = (ImageView) view.findViewById(R.id.callQuality);
        encryption = (ImageView) view.findViewById(R.id.encryption);

        bal = (TextView) view.findViewById(R.id.exit);

        // allAccountsLed = (LinearLayout)
        // view.findViewById(R.id.moreStatusLed);
        //   callStats = (TableLayout) view.findViewById(R.id.callStats);

        // drawer = (SlidingDrawer) view.findViewById(R.id.statusBar);
        // drawer.setOnDrawerOpenListener(new OnDrawerOpenListener()
        // {
        // @Override
        // public void onDrawerOpened()
        // {
        // // populateSliderContent();
        // }
        // });
        //
        // drawer.setVisibility(View.VISIBLE);

        //sliderContentAccounts = (ListView) view.findViewById(R.id.accounts);

        // We create it once to not delay the first display
        // populateSliderContent();
        instance = this;

        return view;
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        isAttached = true;

        if (activity instanceof LinphoneActivity) {
            ((LinphoneActivity) activity).updateStatusFragment(this);
            isInCall = false;
        } else if (activity instanceof InCallActivity) {
            ((InCallActivity) activity).updateStatusFragment(this);
            isInCall = true;
        }
    }

    @Override
    public void onDetach() {
        super.onDetach();
        isAttached = false;
    }

    // public void openOrCloseStatusBar()
    // {
    // openOrCloseStatusBar(false);
    // }

    // public void openOrCloseStatusBar(boolean force)
    // {
    // if (getResources().getBoolean(R.bool.lock_statusbar) && !force) { return;
    // }
    //
    // if (getResources().getBoolean(R.bool.disable_animations))
    // {
    // drawer.toggle();
    // }
    // else
    // {
    // drawer.animateToggle();
    // }
    // }

    // public void closeStatusBar()
    // {
    // if (getResources().getBoolean(R.bool.lock_statusbar)) { return; }
    //
    // if (getResources().getBoolean(R.bool.disable_animations))
    // {
    // drawer.close();
    // }
    // else
    // {
    // drawer.animateClose();
    // }
    // }

    //   private void populateSliderContent()
    //{
    //if (LinphoneManager.isInstanciated() && LinphoneManager.getLc() != null)
    //{
    //sliderContentAccounts.setVisibility(View.GONE);
    //callStats.setVisibility(View.GONE);

    //if (isInCall && isAttached && getResources().getBoolean(R.bool.display_call_stats))
    //{
    //callStats.setVisibility(View.GONE);
    //   LinphoneCall call = LinphoneManager.getLc().getCurrentCall();
    //initCallStatsRefresher(call, callStats);
    //}
    //else if (!isInCall)
    //{
    //sliderContentAccounts.setVisibility(View.VISIBLE);
    //AccountsListAdapter adapter = new AccountsListAdapter();
    //sliderContentAccounts.setAdapter(adapter);
    //}
    //}
    //}

    public void registrationStateChanged(final RegistrationState state) {
        if (!isAttached || !LinphoneService.isReady()) {
            return;
        }
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                statusLed.setImageResource(getStatusIconResource(state, true));
                // statusText.setText(getStatusIconText(state));

                boolean bnl = Engine.getPref().getBoolean(getString(R.string.first_launch_suceeded_once_key),
                        false);
                if (bnl && state.equals(RegistrationState.RegistrationFailed)) {
                    bal.setText("Credit: 0.00");
                    bal.invalidate();
                    LinphoneUtils.showAlertOkMessage(getActivity(),
                            "Please go to Account Setting and Press Save Button", "Registration Failed");
                } else if (state != RegistrationState.RegistrationOk) {

                    bal.setText("Credit: 0.00");
                    bal.invalidate();
                } else {
                    // LinphoneUtils.getBalance(getActivity());
                    RemoteData remoteData = new RemoteData(1, StatusFragment.this);
                    remoteData.execute(RemoteData.RESULT_JSON,
                            LinphoneUtils.API_URL + "balance_api.php?user="
                                    + Engine.getPref().getString(Engine.PREF.LOGIN_ID.name(), "") + "& idClient ="
                                    + Engine.getPref().getString(Engine.PREF.ID_CLIENT.name(), ""));
                }
                bal.invalidate();
                // bal.setText(getBal.bal);
                //            try
                //            {
                //               if (getResources().getBoolean(R.bool.lock_statusbar))
                //               {
                //                  //statusText.setOnClickListener(new OnClickListener()
                //                  {
                //                     @Override
                //                     public void onClick(View v)
                //                     {
                //                        if (LinphoneManager.isInstanciated())
                //                        {
                //                           LinphoneManager.getLc().refreshRegisters();
                //                        }
                //                     }
                //                  });
                //               }
                // getView().setVisibility(View.VISIBLE);
                // setMiniLedsForEachAccount();
                // populateSliderContent();
                // sliderContentAccounts.invalidate();
                //            }
                //            catch (IllegalStateException ise)
                //            {
                //            }
            }
        });
    }

    // private void setMiniLedsForEachAccount() {
    // if (allAccountsLed == null)
    // return;
    //
    // if (LinphoneManager.isInstanciated() && LinphoneManager.getLc() != null)
    // {
    // allAccountsLed.removeAllViews();
    // for (LinphoneProxyConfig lpc :
    // LinphoneManager.getLc().getProxyConfigList()) {
    // ImageView led = new ImageView(getActivity());
    // LinearLayout.LayoutParams params = new
    // LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
    // led.setLayoutParams(params);
    // led.setAdjustViewBounds(true);
    // led.setImageResource(getStatusIconResource(lpc.getState(), false));
    // allAccountsLed.addView(led);
    // }
    // }
    // }

    private int getStatusIconResource(LinphoneCore.RegistrationState state, boolean isDefaultAccount) {
        try {
            boolean defaultAccountConnected = (isDefaultAccount
                    && LinphoneManager.getLcIfManagerNotDestroyedOrNull().getDefaultProxyConfig().isRegistered())
                    || !isDefaultAccount;
            if (state == RegistrationState.RegistrationOk && defaultAccountConnected) {
                return R.drawable.led_connected;
            } else if (state == RegistrationState.RegistrationProgress) {
                return R.drawable.led_inprogress;
            } else if (state == RegistrationState.RegistrationFailed) {
                return R.drawable.led_error;
            } else {
                return R.drawable.led_disconnected;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return -1;
    }

    private String getStatusIconText(LinphoneCore.RegistrationState state) {
        Context context = getActivity();
        if (!isAttached)
            context = LinphoneActivity.instance();

        try {
            if (state == RegistrationState.RegistrationOk
                    && LinphoneManager.getLcIfManagerNotDestroyedOrNull().getDefaultProxyConfig().isRegistered()) {
                return context.getString(R.string.status_connected);
            } else if (state == RegistrationState.RegistrationProgress) {
                return context.getString(R.string.status_in_progress);
            } else if (state == RegistrationState.RegistrationFailed) {
                return context.getString(R.string.status_error);
            } else {
                return context.getString(R.string.status_not_connected);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

    private void startCallQuality() {
        callQuality.setVisibility(View.VISIBLE);
        refreshHandler.postDelayed(mCallQualityUpdater = new Runnable() {
            LinphoneCall mCurrentCall = LinphoneManager.getLc().getCurrentCall();

            public void run() {
                if (mCurrentCall == null) {
                    mCallQualityUpdater = null;
                    return;
                }

                int oldQuality = 0;
                float newQuality = mCurrentCall.getCurrentQuality();
                if ((int) newQuality != oldQuality) {
                    updateQualityOfSignalIcon(newQuality);
                }

                if (isInCall) {
                    refreshHandler.postDelayed(this, 1000);
                } else
                    mCallQualityUpdater = null;
            }
        }, 1000);
    }

    void updateQualityOfSignalIcon(float quality) {
        if (quality >= 4) // Good Quality
        {
            callQuality.setImageResource(R.drawable.call_quality_indicator_3);
        } else if (quality >= 3) // Average quality
        {
            callQuality.setImageResource(R.drawable.call_quality_indicator_2);
        } else if (quality >= 2) // Low quality
        {
            callQuality.setImageResource(R.drawable.call_quality_indicator_1);
        } else if (quality >= 1) // Very low quality
        {
            callQuality.setImageResource(R.drawable.call_quality_indicator_1);
        } else
        // Worst quality
        {
            callQuality.setImageResource(R.drawable.call_quality_indicator_0);
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        LinphoneCore lc = LinphoneManager.getLc();

        LinphoneCall call = lc.getCurrentCall();
        if (isInCall && (call != null || lc.getConferenceSize() > 1 || lc.getCallsNb() > 0)) {
            if (call != null) {
                startCallQuality();
                refreshStatusItems(call, call.getCurrentParamsCopy().getVideoEnabled());
            }

            // statusText.setVisibility(View.GONE);
            encryption.setVisibility(View.GONE);
            statusLed.setVisibility(View.GONE);
            // statusText.setVisibility(View.GONE);
            callQuality.setVisibility(View.GONE);
            bal.setVisibility(View.GONE);

            // drawer.lock();
            // We are obviously connected
            statusLed.setImageResource(R.drawable.led_connected);
            // statusText.setText(getString(R.string.status_connected));
        } else {
            // statusText.setVisibility(View.VISIBLE);

            encryption.setVisibility(View.GONE);

            // if (drawer != null &&
            // getResources().getBoolean(R.bool.lock_statusbar))
            // {
            // drawer.lock();
            // }
            // else if (drawer != null)
            // {
            // // drawer.unlock();
            // drawer.lock();
            // }
        }

        // LinphoneUtils.getBalance(getActivity());
    }

    @Override
    public void onPause() {
        super.onPause();

        if (zrtpToast != null) {
            hideZRTPDialog();
        }

        if (mCallQualityUpdater != null) {
            refreshHandler.removeCallbacks(mCallQualityUpdater);
            mCallQualityUpdater = null;
        }
    }

    public void refreshStatusItems(final LinphoneCall call, boolean isVideoEnabled) {
        if (call != null) {
            MediaEncryption mediaEncryption = call.getCurrentParamsCopy().getMediaEncryption();

            if (mediaEncryption == MediaEncryption.SRTP
                    || (mediaEncryption == MediaEncryption.ZRTP && call.isAuthenticationTokenVerified())) {
                encryption.setImageResource(R.drawable.security_ok);
            } else if (mediaEncryption == MediaEncryption.ZRTP && !call.isAuthenticationTokenVerified()) {
                encryption.setImageResource(R.drawable.security_pending);
            } else {
                encryption.setImageResource(R.drawable.security_ko);
            }

            if (mediaEncryption == MediaEncryption.ZRTP) {
                encryption.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        showZRTPDialog(call);
                    }
                });
            } else {
                encryption.setOnClickListener(null);
            }
        }
    }

    private void hideZRTPDialog() {
        hideZrtpToast = true;

        if (zrtpToast != null) {
            zrtpToast.cancel();
        }
        if (zrtpHack != null) {
            zrtpHack.cancel();
        }
    }

    private void showZRTPDialog(final LinphoneCall call) {
        boolean authVerified = call.isAuthenticationTokenVerified();
        String format = getString(authVerified ? R.string.reset_sas_fmt : R.string.verify_sas_fmt);

        LayoutInflater inflater = LayoutInflater.from(getActivity());
        View layout = inflater.inflate(R.layout.zrtp_dialog,
                (ViewGroup) getActivity().findViewById(R.id.toastRoot));

        TextView toastText = (TextView) layout.findViewById(R.id.toastMessage);
        toastText.setText(String.format(format, call.getAuthenticationToken()));

        zrtpToast = new Toast(getActivity());
        zrtpToast.setGravity(Gravity.TOP | Gravity.RIGHT, 0, LinphoneUtils.pixelsToDpi(getResources(), 40));
        zrtpToast.setDuration(Toast.LENGTH_LONG);

        ImageView ok = (ImageView) layout.findViewById(R.id.toastOK);
        ok.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (call != null) {
                    call.setAuthenticationTokenVerified(true);
                }
                if (encryption != null) {
                    encryption.setImageResource(R.drawable.security_ok);
                }
                hideZRTPDialog();
            }
        });

        ImageView notOk = (ImageView) layout.findViewById(R.id.toastNotOK);
        notOk.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (call != null) {
                    call.setAuthenticationTokenVerified(false);
                }
                if (encryption != null) {
                    encryption.setImageResource(R.drawable.security_pending);
                }
                hideZRTPDialog();
            }
        });

        zrtpHack = new CountDownTimer(3000, 1000) {
            public void onTick(long millisUntilFinished) {
                if (!hideZrtpToast) {
                    zrtpToast.show();
                }
            }

            public void onFinish() {
                if (!hideZrtpToast) {
                    zrtpToast.show();
                    zrtpHack.start();
                }
            }

        };

        zrtpToast.setView(layout);
        hideZrtpToast = false;
        zrtpToast.show();
        zrtpHack.start();
    }

    //
    //   private void initCallStatsRefresher(final LinphoneCall call, final View view)
    //   {
    //      if (mTimer != null && mTask != null) { return; }
    //
    //      mTimer = new Timer();
    //      mTask = new TimerTask()
    //      {
    //         @Override
    //         public void run()
    //         {
    //            if (call == null)
    //            {
    //               mTimer.cancel();
    //               return;
    //            }
    //
    //            final TextView title = (TextView) view.findViewById(R.id.call_stats_title);
    //            final TextView codec = (TextView) view.findViewById(R.id.codec);
    //            final TextView dl = (TextView) view.findViewById(R.id.downloadBandwith);
    //            final TextView ul = (TextView) view.findViewById(R.id.uploadBandwith);
    //            final TextView ice = (TextView) view.findViewById(R.id.ice);
    //            if (codec == null || dl == null || ul == null || ice == null)
    //            {
    //               mTimer.cancel();
    //               return;
    //            }
    //
    //            mHandler.post(new Runnable()
    //            {
    //               @Override
    //               public void run()
    //               {
    //                  synchronized (LinphoneManager.getLc())
    //                  {
    //                     final LinphoneCallParams params = call.getCurrentParamsCopy();
    //                     if (params.getVideoEnabled())
    //                     {
    //                        final LinphoneCallStats videoStats = call.getVideoStats();
    //                        final LinphoneCallStats audioStats = call.getAudioStats();
    //                        if (videoStats != null && audioStats != null)
    //                        {
    //                           title.setText("Video");
    //                           PayloadType payloadAudio = params.getUsedAudioCodec();
    //                           PayloadType payloadVideo = params.getUsedVideoCodec();
    //                           if (payloadVideo != null && payloadAudio != null)
    //                           {
    //                              codec.setText(payloadVideo.getMime() + " / " + payloadAudio.getMime() + (payloadAudio.getRate() / 1000));
    //                           }
    //                           dl.setText(String.valueOf((int) videoStats.getDownloadBandwidth()) + " / " + (int) audioStats.getDownloadBandwidth() + " kbits/s");
    //                           ul.setText(String.valueOf((int) videoStats.getUploadBandwidth()) + " / " + (int) audioStats.getUploadBandwidth() + " kbits/s");
    //                           ice.setText(videoStats.getIceState().toString());
    //                        }
    //                     }
    //                     else
    //                     {
    //                        final LinphoneCallStats audioStats = call.getAudioStats();
    //                        if (audioStats != null)
    //                        {
    //                           title.setText("Audio");
    //                           PayloadType payload = params.getUsedAudioCodec();
    //                           if (payload != null)
    //                           {
    //                              codec.setText(payload.getMime() + (payload.getRate() / 1000));
    //                           }
    //                           dl.setText(String.valueOf((int) audioStats.getDownloadBandwidth()) + " kbits/s");
    //                           ul.setText(String.valueOf((int) audioStats.getUploadBandwidth()) + " kbits/s");
    //                           ice.setText(audioStats.getIceState().toString());
    //                        }
    //                     }
    //                  }
    //               }
    //            });
    //         }
    //      };
    //      mTimer.scheduleAtFixedRate(mTask, 0, 1500);
    //   }
    //
    class AccountsListAdapter extends BaseAdapter {

        private List<CheckBox> checkboxes;

        AccountsListAdapter() {

            checkboxes = new ArrayList<CheckBox>();
        }

        private OnClickListener defaultListener = new OnClickListener() {

            @Override
            public void onClick(View v) {
                CheckBox checkBox = (CheckBox) v;
                if (checkBox.isChecked()) {

                    String tag = (String) checkBox.getTag();
                    String sipAddress = tag.split(":")[0];
                    int accountPosition = Integer.parseInt(tag.split(":")[1]);

                    int nbAccounts = Engine.getPref().getInt(getString(R.string.pref_extra_accounts), 0);
                    int accountIndex = 0;
                    for (int i = 0; i < nbAccounts; i++) {
                        String keyUsername = getString(R.string.pref_username_key);
                        String keyDomain = getString(R.string.pref_domain_key);
                        if (i > 0) {
                            keyUsername += i + "";
                            keyDomain += i + "";
                        }
                        String username = Engine.getPref().getString(keyUsername, "");
                        String domain = Engine.getPref().getString(keyDomain, "");
                        String identity = username + "@" + domain;
                        if (identity.equals(sipAddress)) {
                            accountIndex = i;
                            break;
                        }
                    }

                    Engine.getEditor().putInt(getString(R.string.pref_default_account_key), accountIndex).commit();

                    for (CheckBox cb : checkboxes) {
                        cb.setChecked(false);
                        cb.setEnabled(true);
                    }
                    checkBox.setChecked(true);
                    checkBox.setEnabled(false);

                    LinphoneCore lc = LinphoneManager.getLc();
                    lc.setDefaultProxyConfig((LinphoneProxyConfig) getItem(accountPosition));
                    if (lc.isNetworkReachable()) {
                        lc.refreshRegisters();
                    }
                }
            }
        };

        public int getCount() {
            LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
            if (lc != null) {
                return lc.getProxyConfigList().length;
            } else {
                return 0;
            }
        }

        public Object getItem(int position) {
            return LinphoneManager.getLc().getProxyConfigList()[position];
        }

        public long getItemId(int position) {
            return position;
        }

        public View getView(final int position, View convertView, ViewGroup parent) {
            View view = null;
            if (convertView != null) {
                view = convertView;
            } else {
                view = LayoutInflater.from(getActivity()).inflate(R.layout.accounts, parent, false);
            }

            LinphoneProxyConfig lpc = (LinphoneProxyConfig) getItem(position);

            ImageView status = (ImageView) view.findViewById(R.id.State);

            TextView identity = (TextView) view.findViewById(R.id.Identity);
            String sipAddress = (lpc.getIdentity() != null && lpc.getIdentity().startsWith("sip:"))
                    ? lpc.getIdentity().split("sip:")[1]
                    : lpc.getIdentity();
            identity.setText(sipAddress);
            view.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    LinphoneManager.getLc().refreshRegisters();
                }
            });

            CheckBox isDefault = (CheckBox) view.findViewById(R.id.Default);
            checkboxes.add(isDefault);

            isDefault.setTag(sipAddress + ":" + position);
            isDefault.setChecked(false);
            isDefault.setEnabled(true);

            if (Engine.getPref() != null) {
                int nbAccounts = Engine.getPref().getInt(getString(R.string.pref_extra_accounts), 0);
                int accountIndex = 0;
                for (int i = 0; i < nbAccounts; i++) {
                    String keyUsername = getString(R.string.pref_username_key);
                    String keyDomain = getString(R.string.pref_domain_key);
                    if (i > 0) {
                        keyUsername += i + "";
                        keyDomain += i + "";
                    }
                    String username = Engine.getPref().getString(keyUsername, "");
                    String domain = Engine.getPref().getString(keyDomain, "");
                    String id = username + "@" + domain;
                    if (id.equals(sipAddress)) {
                        accountIndex = i;
                        break;
                    }
                }
                if (Engine.getPref().getInt(getString(R.string.pref_default_account_key), 0) == accountIndex) {
                    isDefault.setChecked(true);
                    isDefault.setEnabled(false);
                    status.setImageResource(getStatusIconResource(lpc.getState(), true));
                } else {
                    status.setImageResource(getStatusIconResource(lpc.getState(), false));
                }
            } else {
                status.setImageResource(getStatusIconResource(lpc.getState(), false));
            }

            isDefault.setOnClickListener(defaultListener);

            return view;
        }
    }

    @Override
    public void remoteCompleated(RemoteProperty remoteProperty) {
        if (remoteProperty != null) {
            try {
                JSONObject balc = (JSONObject) remoteProperty.getJsonObject().getJSONArray("listbalance").get(0);
                bal.setText(balc.getString("balance") + " " + balc.getString("currency"));
            } catch (JSONException e) {
                // {"listbalance":[{"balance":"1.22","currency":"GBP"}]}
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }
}