12e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen/*
22e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * Copyright (C) 2009 The Android Open Source Project
32e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen *
42e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * Licensed under the Apache License, Version 2.0 (the "License");
52e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * you may not use this file except in compliance with the License.
62e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * You may obtain a copy of the License at
72e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen *
82e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen *      http://www.apache.org/licenses/LICENSE-2.0
92e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen *
102e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * Unless required by applicable law or agreed to in writing, software
112e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * distributed under the License is distributed on an "AS IS" BASIS,
122e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * See the License for the specific language governing permissions and
142e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen * limitations under the License.
152e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen */
162e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
172e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenpackage com.android.effectstest;
182e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
192e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.app.Activity;
202e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.content.Context;
212e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.content.Intent;
222e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.os.Bundle;
232e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.util.Log;
242e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.view.KeyEvent;
252e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.view.Menu;
262e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.view.View.OnClickListener;
272e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.view.View;
282e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.view.ViewGroup;
292e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.widget.Button;
302e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.widget.TextView;
312e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.widget.ListView;
322e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.widget.BaseAdapter;
332e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.widget.LinearLayout;
342e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport android.media.audiofx.AudioEffect;
3580cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen
362e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenimport java.util.UUID;
372e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
382e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissenpublic class EffectsTest extends Activity {
392e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
402e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    private final static String TAG = "EffectsTest";
412e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
422e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
432e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    public EffectsTest() {
442e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        Log.d(TAG, "contructor");
452e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    }
462e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
472e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    @Override
482e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    public void onCreate(Bundle icicle) {
492e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        super.onCreate(icicle);
502e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        setContentView(R.layout.effectstest);
512e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
522e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        Button button = (Button) findViewById(R.id.env_reverb_actvity);
532e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        button.setOnClickListener(new OnClickListener() {
542e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            public void onClick(View v) {
552e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                startActivity(new Intent(EffectsTest.this, EnvReverbTest.class));
562e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            }
572e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        });
582e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
592e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        button = (Button) findViewById(R.id.preset_reverb_actvity);
602e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        button.setOnClickListener(new OnClickListener() {
612e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            public void onClick(View v) {
622e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                startActivity(new Intent(EffectsTest.this, PresetReverbTest.class));
632e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            }
642e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        });
652e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
662e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        button = (Button) findViewById(R.id.equalizer_actvity);
672e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        button.setOnClickListener(new OnClickListener() {
682e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            public void onClick(View v) {
692e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                startActivity(new Intent(EffectsTest.this, EqualizerTest.class));
702e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            }
712e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        });
722e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
732e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        button = (Button) findViewById(R.id.virtualizer_actvity);
742e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        button.setOnClickListener(new OnClickListener() {
752e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            public void onClick(View v) {
762e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                startActivity(new Intent(EffectsTest.this, VirtualizerTest.class));
772e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            }
782e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        });
792e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
802e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        button = (Button) findViewById(R.id.bassboost_actvity);
812e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        button.setOnClickListener(new OnClickListener() {
822e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            public void onClick(View v) {
832e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                startActivity(new Intent(EffectsTest.this, BassBoostTest.class));
842e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            }
852e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        });
862e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
872e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        button = (Button) findViewById(R.id.visualizer_actvity);
882e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        button.setOnClickListener(new OnClickListener() {
892e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            public void onClick(View v) {
902e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                startActivity(new Intent(EffectsTest.this, VisualizerTest.class));
912e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            }
922e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        });
932e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
942e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        AudioEffect.Descriptor[] descriptors = AudioEffect.queryEffects();
952e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
962e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        ListView list = (ListView) findViewById(R.id.effect_list);
972e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        list.setAdapter(new EffectListAdapter(this, descriptors));
982e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
992e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    }
1002e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
1012e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    private class EffectListAdapter extends BaseAdapter {
1022e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
1032e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        private Context mContext;
1042e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
1052e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        AudioEffect.Descriptor[] mDescriptors;
1062e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
1072e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        public EffectListAdapter(Context context, AudioEffect.Descriptor[] descriptors) {
1082e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            Log.d(TAG, "EffectListAdapter contructor");
1092e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            mContext = context;
1102e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            mDescriptors = descriptors;
1112e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            for (int i = 0; i < mDescriptors.length; i++) {
1122e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                Log.d(TAG, "Effect: "+i+" name: "+ mDescriptors[i].name);
1132e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            }
1142e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        }
1152e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
1162e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen         public int getCount() {
1172e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            Log.d(TAG, "EffectListAdapter getCount(): "+mDescriptors.length);
1182e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            return mDescriptors.length;
1192e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        }
1202e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
1212e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        public Object getItem(int position) {
1222e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            Log.d(TAG, "EffectListAdapter getItem() at: "+position+" name: "
1232e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                    +mDescriptors[position].name);
1242e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            return mDescriptors[position];
1252e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        }
1262e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
1272e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        public long getItemId(int position) {
1282e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            return position;
1292e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        }
1302e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
1312e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        public View getView(int position, View convertView, ViewGroup parent) {
1322e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            EffectView ev;
1332e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            if (convertView == null) {
1342e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                Log.d(TAG, "getView() new EffectView position: " + position);
1352e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                ev = new EffectView(mContext, mDescriptors);
1362e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            } else {
1372e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                Log.d(TAG, "getView() convertView position: " + position);
1382e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                ev = new EffectView(mContext, mDescriptors);
1392e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                //ev = (EffectView) convertView;
1402e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            }
1412e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            ev.set(position);
1422e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            return ev;
1432e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        }
1442e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    }
1452e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
1462e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    private class EffectView extends LinearLayout {
1472e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        private Context mContext;
1482e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        AudioEffect.Descriptor[] mDescriptors;
1492e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
1502e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        public EffectView(Context context, AudioEffect.Descriptor[] descriptors) {
1512e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            super(context);
1522e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
1532e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            mContext = context;
1542e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            mDescriptors = descriptors;
1552e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            this.setOrientation(VERTICAL);
1562e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        }
1572e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
15880cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen        public String effectUuidToString(UUID effectType) {
15980cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen            if (effectType.equals(AudioEffect.EFFECT_TYPE_VIRTUALIZER)) {
16080cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen                return "Virtualizer";
16180cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen            } else if (effectType.equals(AudioEffect.EFFECT_TYPE_ENV_REVERB)){
16280cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen                return "Reverb";
16380cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen            } else if (effectType.equals(AudioEffect.EFFECT_TYPE_PRESET_REVERB)){
16480cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen                return "Preset Reverb";
16580cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen            } else if (effectType.equals(AudioEffect.EFFECT_TYPE_EQUALIZER)){
16680cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen                return "Equalizer";
16780cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen            } else if (effectType.equals(AudioEffect.EFFECT_TYPE_BASS_BOOST)){
16880cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen                return "Bass Boost";
16980cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen            } else if (effectType.equals(AudioEffect.EFFECT_TYPE_AGC)){
17080cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen                return "Automatic Gain Control";
17180cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen            } else if (effectType.equals(AudioEffect.EFFECT_TYPE_AEC)){
17280cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen                return "Acoustic Echo Canceler";
17380cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen            } else if (effectType.equals(AudioEffect.EFFECT_TYPE_NS)){
17480cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen                return "Noise Suppressor";
17580cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen            }
17680cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen
17780cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen            return effectType.toString();
17880cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen        }
17980cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen
1802e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        public void set(int position) {
1812e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            TextView tv = new TextView(mContext);
1822e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            tv.setText("Effect "+ position);
1832e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            addView(tv, new LinearLayout.LayoutParams(
1842e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                    LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
1852e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            tv = new TextView(mContext);
18680cd3fcd5cdae6a2ea4a7c834d1df0dd79eb5b89Marco Nelissen            tv.setText(" type: "+ effectUuidToString(mDescriptors[position].type));
1872e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            addView(tv, new LinearLayout.LayoutParams(
1882e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                    LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
1892e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            tv = new TextView(mContext);
1902e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            tv.setText(" uuid: "+ mDescriptors[position].uuid.toString());
1912e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            addView(tv, new LinearLayout.LayoutParams(
1922e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                    LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
1932e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            tv = new TextView(mContext);
1942e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            tv.setText(" name: "+ mDescriptors[position].name);
1952e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            addView(tv, new LinearLayout.LayoutParams(
1962e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                    LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
1972e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            tv = new TextView(mContext);
1982e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            tv.setText(" vendor: "+ mDescriptors[position].implementor);
1992e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            addView(tv, new LinearLayout.LayoutParams(
2002e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                    LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
2012e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            tv = new TextView(mContext);
2022e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            tv.setText(" mode: "+ mDescriptors[position].connectMode);
2032e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen            addView(tv, new LinearLayout.LayoutParams(
2042e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen                    LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
2052e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen        }
2062e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen    }
2072e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen
2082e2beaaee2a427598ced5067fc59f3ae9a98cf35Marco Nelissen}
209