кнопки обусловлены поддерживаемыми параметрами - PullRequest
0 голосов
/ 10 сентября 2010

Я хотел бы создать список кнопок, которые зависят от поддерживаемых параметров устройства;например, если камера устройства поддерживает настройку баланса белого и антиполосы, тогда отображаются 2 соответствующие кнопки, чтобы пользователь мог изменить эти настройки;но если я запускаю одно и то же приложение на устройстве, которое поддерживает только настройку баланса белого, отображается только одна кнопка.

Я знаю, как создать список кнопок в XML-файле макета, и знаю, какпроверить поддерживаемые параметры в файле активности .java, но я не вижу способа связать их вместе.

Любая помощь очень ценится.

FWIW, вотсоответствующие части моего кода до сих пор

активность .java файл

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();

    }
}

макет .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>

1 Ответ

0 голосов
/ 10 сентября 2010

просто возьмите экземпляр Button с помощью findViewById и сделайте его VISIBLE / GONE в соответствии с доступными функциями.

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
...