2010-09-10 6 views
0

Je voudrais créer une liste de boutons qui dépendent des paramètres pris en charge par le périphérique; Par exemple, si la caméra de l'appareil prend en charge le réglage de la balance des blancs et de l'antibiogramme, les 2 boutons correspondants sont affichés pour permettre à l'utilisateur de modifier ces paramètres; mais si je cours la même application sur un appareil qui ne supporte que le réglage de la balance des blancs, alors un seul bouton est affiché.boutons conditionnés par les paramètres pris en charge

Je sais comment créer une liste de boutons dans le fichier layout .xml et je sais comment tester les paramètres supportés dans le fichier d'activité .java, mais je ne trouve pas de moyen de les relier entre eux .

Toute aide est grandement appréciée.

FWIW, voici les éléments pertinents de mon code jusqu'à présent

activité .JAVA fichier

package com.MyProject; 

import java.util.List; 

import android.app.Activity; 
import android.hardware.Camera; 
import android.hardware.Camera.Size; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 

public class CameraSettingActivity extends Activity { 

    private static final String TAG = "CameraSettingActivity"; 
    private Object mCameraView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.camera_setting); 

     Camera mCamera = Camera.open(); 
     /* View mCameraView;*/ 
     Camera.Parameters params = mCamera.getParameters(); 

     // Get supported white balance modes 
     List<String> white_balance = params.getSupportedWhiteBalance(); 
     if (white_balance!=null) { 
      String mString = white_balance.get(0); 
      Log.i(TAG, "CAMERA WHITE BALANCE : (" + mString + ")"); 
     } 

     // Get supported antibanding modes 
     List<String> antibanding = params.getSupportedAntibanding(); 
     if (antibanding!=null) { 
      String mString = antibanding.get(0); 
      Log.i(TAG, "CAMERA ANTIBANDING : (" + mString + ")"); 
     } 

     mCamera.setParameters(params); 
     mCamera.release(); 

    } 
} 

mise en page fichier .xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center_vertical|center_horizontal" 
    android:background="@color/green_background" 
    > 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical|center_horizontal" 
     android:text="@string/under_construction" 
    /> 
    <Button 
     android:id="@+id/white_balance_button" 
     android:layout_width="100dip" 
     android:layout_height="wrap_content" 
     android:text="@string/white_balance" 
    /> 

    <Button 
    android:id="@+id/antibanding_button" 
     android:layout_width="100dip" 
     android:layout_height="wrap_content" 
     android:text="@string/antibanding" 
     /> 
</LinearLayout> 

Répondre

0

simplement saisir l'instance de bouton à l'aide findViewById et rendre VISIBLE/GONE selon les fonctionnalités disponibles.

if (white_balance!=null) { 
String mString = white_balance.get(0); 
Log.i(TAG, "CAMERA WHITE BALANCE : (" + mString + ")"); 
} else { 
    Button whiteBalance = (Button)findViewById(R.id. white_balance_button); 
    whiteBalance.setVisibility(View.GONE); 
} //same for anibanding

Questions connexes