Использование SeekBar для управления объемом в Android?

Как я могу точно изменить объем моего приложения с помощью кнопки поиска без контроля громкости на кнопках громкости на моем устройстве Android? У меня есть отдельная функция на клавишах томов на моем андроиде, поэтому я хочу использовать брекер для управления томом. Кто-нибудь может мне помочь, пожалуйста?

Пожалуйста, смотрите ниже код. Это решает вашу проблему.

import android.app.Activity; import android.content.Context; import android.media.AudioManager; import android.os.Bundle; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; public class TestExample extends Activity { /** Called when the activity is first created. */ private SeekBar volumeSeekbar = null; private AudioManager audioManager = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setVolumeControlStream(AudioManager.STREAM_MUSIC); setContentView(R.layout.main); initControls(); } private void initControls() { try { volumeSeekbar = (SeekBar)findViewById(R.id.seekBar1); audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); volumeSeekbar.setMax(audioManager .getStreamMaxVolume(AudioManager.STREAM_MUSIC)); volumeSeekbar.setProgress(audioManager .getStreamVolume(AudioManager.STREAM_MUSIC)); volumeSeekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar arg0) { } @Override public void onStartTrackingTouch(SeekBar arg0) { } @Override public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) { audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0); } }); } catch (Exception e) { e.printStackTrace(); } } 

Это пользовательский View который я использовал для регулировки уровня громкости. Он работает, сдвинув палец вверх, но вы можете легко изменить это.

SliderView

 public class SliderView extends View implements OnGestureListener, OnTouchListener { private int mHeight = 0; private int mMaxValue = 16; private float mDelta = 0; private int mColor = Color.WHITE; private GestureDetector mGestureDetector; private OnValueChangeListener mListener; public SliderView(Context context) { super(context); init(context); } public SliderView(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public SliderView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(context); } @Override public boolean onDown(MotionEvent e) { mDelta = 0; return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } @Override public void onLongPress(MotionEvent e) { mDelta = 0; } @Override public boolean onScroll(MotionEvent event1, MotionEvent event2, float distanceX, float distanceY) { if (mDelta >= 1 || mDelta <= -1) { if (mListener != null) { mListener.onValueChanged((int) mDelta); } mDelta = 0; } else { mDelta += mMaxValue * distanceY / mHeight * 2; } return false; } @Override public void onShowPress(MotionEvent e) { } @Override public boolean onSingleTapUp(MotionEvent e) { return false; } @Override public void onSizeChanged(int w, int h, int oldw, int oldh) { mHeight = getHeight(); } @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); if (action == MotionEvent.ACTION_DOWN) { v.setBackgroundColor(Color.argb(0x33, Color.red(mColor), Color.green(mColor), Color.blue(mColor))); } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { v.setBackgroundColor(Color.TRANSPARENT); } mGestureDetector.onTouchEvent(event); return true; } public void setColor(int color) { mColor = color; } public void setMax(int max) { mMaxValue = max; } public void setOnValueChangeListener(OnValueChangeListener listener) { mListener = listener; } private void init(Context context) { setOnTouchListener(this); mGestureDetector = new GestureDetector(context, this); mHeight = getHeight(); } public interface OnValueChangeListener { void onValueChanged(int value); } } 

Используя это - убедитесь, что вы реализуете OnValueChangeListener .

 SliderView mSlider; mSlider= (SliderView) findViewById(id); mSlider.setOnValueChangeListener(this); mSlider.setMax(mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)); 

Я не думаю, что это не то, о чем вы просите, но это определенно поможет вам.

@CommonsWare сделайте это в https://github.com/commonsguy/cw-omnibus/tree/master/SystemServices/Volume, а также установите пять типов томов с помощью SeekBar

Обработка пяти различных типов томов

 /*** Copyright (c) 2008-2012 CommonsWare, LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. From _The Busy Coder's Guide to Android Development_ http://commonsware.com/Android */ package com.commonsware.android.syssvc.volume; import android.app.Activity; import android.content.Context; import android.media.AudioManager; import android.os.Bundle; import android.widget.SeekBar; public class Volumizer extends Activity { SeekBar alarm=null; SeekBar music=null; SeekBar ring=null; SeekBar system=null; SeekBar voice=null; AudioManager mgr=null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mgr=(AudioManager)getSystemService(Context.AUDIO_SERVICE); alarm=(SeekBar)findViewById(R.id.alarm); music=(SeekBar)findViewById(R.id.music); ring=(SeekBar)findViewById(R.id.ring); system=(SeekBar)findViewById(R.id.system); voice=(SeekBar)findViewById(R.id.voice); initBar(alarm, AudioManager.STREAM_ALARM); initBar(music, AudioManager.STREAM_MUSIC);//for Volume this is neccessary initBar(ring, AudioManager.STREAM_RING); initBar(system, AudioManager.STREAM_SYSTEM); initBar(voice, AudioManager.STREAM_VOICE_CALL); } private void initBar(SeekBar bar, final int stream) { bar.setMax(mgr.getStreamMaxVolume(stream)); bar.setProgress(mgr.getStreamVolume(stream)); bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { public void onProgressChanged(SeekBar bar, int progress, boolean fromUser) { mgr.setStreamVolume(stream, progress, AudioManager.FLAG_PLAY_SOUND); } public void onStartTrackingTouch(SeekBar bar) { // no-op } public void onStopTrackingTouch(SeekBar bar) { // no-op } }); } } 

И только для контроля только использования тома
music=(SeekBar)findViewById(R.id.music); и initBar(music, AudioManager.STREAM_MUSIC);

  • Как я могу получить данные из firebase на мой адаптер
  • Как я повторяю метод каждые 10 минут после нажатия кнопки и завершения ее на другой кнопке
  • URL-адрес исходной папки?
  • Как просмотреть файл Realm в браузере Realm?
  • Заголовок и нижний колонтитул RecyclerView
  • Мое текущее местоположение всегда возвращает null. Как я могу это исправить?
  • BroadcastReceiver не получает BOOT_COMPLETED
  • Рекомендуемый способ / порядок чтения данных из веб-службы, анализ этих данных и их вставка в SQLite db
  • Показать диалог из fragmentа?
  • Получение проблемы при проверке динамически созданного флажка через просмотр списка
  • Фоновый оттенок Lollipop не влияет на кнопку
  • Interesting Posts

    Каков наилучший способ доступа к хранилищу редуктов вне реагирующего компонента?

    Каталоги Linux для сопоставления с SSD

    Проблемы с API-интерфейсами API Google Maps v3 + jQuery

    Outlook: ответьте как адрес электронной почты, сообщение было отправлено

    Как настроить принтер WI-FI?

    Как я могу стереть сломанный жесткий диск, прежде чем отправлять его обратно изготовителю для обслуживания?

    Как генерировать распределенные данные, средние, SD, перекос и эксцесс в R?

    Использование автозаполнения jQuery UI начинается с

    C ++ CLI ошибка C3767: функция кандидата недоступна

    Как разрешить удаленное подключение к mysql

    Установите плагин marvel для Elasticsearch

    Компиляция classа Java в памяти с помощью аннотаций `lombok` и Java JDK 8

    Динамическое создание кнопок и установка onClickListener

    Какую ссылку мне нужно использовать Microsoft.Office.Interop.Excel в .NET?

    Не удалось найти стиль «координаторLayoutStyle» в текущей теме

    Давайте будем гением компьютера.