/*
AudioSettingsFragment.java
Copyright (c) 2015 NTT DOCOMO,INC.
Released under the MIT license
http://opensource.org/licenses/mit-license.php
*/
package org.deviceconnect.android.deviceplugin.webrtc.setting.fragment;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ListView;
import android.widget.TextView;
import org.deviceconnect.android.deviceplugin.webrtc.R;
import org.deviceconnect.android.deviceplugin.webrtc.setting.SettingUtil;
import org.deviceconnect.android.deviceplugin.webrtc.util.AudioUtils;
/**
* 音声設定画面.
*
* @author NTT DOCOMO, INC.
*/
public class AudioSettingsFragment extends Fragment {
private SettingsAdapter mAdapter;
private AudioUtils.AudioFormat mAudioFormat;
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
final Bundle savedInstanceState) {
String audio = SettingUtil.getAudioParam(getActivity());
mAudioFormat = AudioUtils.textToFormat(audio);
if (mAudioFormat == null) {
mAudioFormat = AudioUtils.getDefaultFormat();
}
mAdapter = new SettingsAdapter();
View root = inflater.inflate(R.layout.settings_audio, null);
ListView listView = (ListView) root.findViewById(R.id.listView);
listView.setAdapter(mAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(final AdapterView<?> parent, final View view, final int position, final long id) {
if (position == 3) {
CheckBox cb = (CheckBox) view.findViewById(R.id.checkbox_id);
if (cb != null) {
cb.setChecked(mAudioFormat.isNoAudioProcessing());
}
}
}
});
return root;
}
private void setEnabledAudioProcess(final boolean enabled) {
mAudioFormat.setNoAudioProcessing(!enabled);
SettingUtil.setAudioParam(getActivity(), AudioUtils.formatToText(mAudioFormat));
}
private class SettingsAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private SettingsAdapter() {
mInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return 4;
}
@Override
public Object getItem(final int position) {
return null;
}
@Override
public long getItemId(final int position) {
return position;
}
@Override
public View getView(final int position, final View convertView, final ViewGroup parent) {
View view = null;
if (position == 0) {
view = mInflater.inflate(R.layout.item_settings_param, parent, false);
setViewText(view, getString(R.string.settings_audio_sample_rate), "" + mAudioFormat.getSampleRate());
} else if (position == 1) {
view = mInflater.inflate(R.layout.item_settings_param, parent, false);
String value;
if (mAudioFormat.getChannels() == AudioUtils.MONO) {
value = getString(R.string.settings_audio_channels_mono);
} else {
value = getString(R.string.settings_audio_channels_stereo);
}
setViewText(view, getString(R.string.settings_audio_channels), value);
} else if (position == 2) {
view = mInflater.inflate(R.layout.item_settings_param, parent, false);
String value;
if (mAudioFormat.getBitDepth() == AudioUtils.BIT_DEPTH_8BYTE) {
value = getString(R.string.settings_audio_bit_depth_8);
} else if (mAudioFormat.getBitDepth() == AudioUtils.BIT_DEPTH_16SHORT) {
value = getString(R.string.settings_audio_bit_depth_16);
} else {
value = getString(R.string.settings_audio_bit_depth_32);
}
setViewText(view, getString(R.string.settings_audio_bit_depth), value);
} else if (position == 3) {
view = mInflater.inflate(R.layout.item_settings_checkbox, parent, false);
CheckBox cb = (CheckBox) view.findViewById(R.id.checkbox_id);
cb.setChecked(!mAudioFormat.isNoAudioProcessing());
cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(final CompoundButton buttonView, final boolean isChecked) {
setEnabledAudioProcess(isChecked);
}
});
String title = getString(R.string.settings_audio_processing);
String description = getString(R.string.settings_audio_processing_description);
setViewText(view, title, description);
}
return view;
}
private void setViewText(final View view, final String title, final String value) {
TextView titleView = (TextView) view.findViewById(R.id.title);
if (titleView != null) {
titleView.setText(title);
}
TextView valueView = (TextView) view.findViewById(R.id.value);
if (valueView != null) {
valueView.setText(value);
}
}
}
}