Доступ к устройству изменения громкости в gridView - PullRequest
1 голос
/ 30 января 2020

В android студии я сделал gridView, который показывает изображение, и каждое изображение связано со своим собственным звуком, и оно работает, но если я добавлю в видоизменяющее устройство громкость, он больше не будет воспроизводить звук. есть идеи, как сделать чейнджер громкости и изображение независимыми в виде сетки?

Вид (это линейное расположение)

 <ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/image1"
    android:layout_gravity="center"
     />
<SeekBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

адаптер

public class SoundAdapter extends ArrayAdapter<sound> {


SoundAdapter(Context context, int resource, List<sound> objects) {
    super(context, resource, objects);
}

public View getView(int position, View convertView, ViewGroup parent) {
    // Check if the existing view is being reused, otherwise inflate the view
    LinearLayout ListItemView = (LinearLayout) convertView;
    if (ListItemView == null) {
        ListItemView = (LinearLayout) LayoutInflater.from(getContext()).inflate(
                R.layout.custom_list_view, parent, false);
    }

    sound currentSound = getItem(position);

    // Find the ImageView in the list_item.xml layout with the ID list_item_icon
    ImageView iconView = ListItemView.findViewById(R.id.image1);
    iconView.setImageResource(currentSound.getPhoto());
    iconView.setVisibility(View.VISIBLE);


    return ListItemView;

}}

Основная активность

public class MainActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer;
private AudioManager am;

android.media.AudioManager.OnAudioFocusChangeListener afChangeListener = new android.media.AudioManager.OnAudioFocusChangeListener() {
    public void onAudioFocusChange(int focusChange) {
        if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT) {
            // Pause playback
            mediaPlayer.pause();
            mediaPlayer.seekTo(0);
        } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
            // Resume playback
            mediaPlayer.start();
        } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
            // Stop playback
            //            releaseMedia();
        }
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sound);
    am =  (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    final ArrayList<sound> sound = new ArrayList<>();

    sound.add(new sound(R.drawable.fire,R.raw.campfire));
    sound.add(new sound(R.drawable.waves,R.raw.waves));
    sound.add(new sound(R.drawable.coffee, R.raw.coffeeshop));
    sound.add(new sound(R.drawable.street,R.raw.streetsound));
    sound.add(new sound(R.drawable.heavywind,R.raw.wind));
    sound.add(new sound(R.drawable.wind,R.raw.gentlewind));
    sound.add(new sound(R.drawable.rain,R.raw.verendaroofrain));
    sound.add(new sound(R.drawable.umberlla1,R.raw.umberllarain));
    sound.add(new sound(R.drawable.river,R.raw.flowing_water));
    sound.add(new sound(R.drawable.thunder,R.raw.nature_thunder_crack));

    SoundAdapter adapter = new SoundAdapter(MainActivity.this, R.layout.custom_list_view, sound);

    GridView gridView =  findViewById(R.id.sound);
    gridView.setAdapter(adapter);


    gridView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            ImageView imageView = findViewById(R.id.image1);

            imageView.setVisibility(View.VISIBLE);

            imageView.setOnClickListener(new View.OnClickListener() {
                // The code in this method will be executed when the numbers View is clicked on.
                @Override
                public void onClick(View view) {

                    Toast.makeText(getApplicationContext(),"Helefefzefaefafaefeaf",Toast.LENGTH_SHORT).show();

                }
            });


            sound sound1 = sound.get(position);

                int result = am.requestAudioFocus(afChangeListener,
                        // Use the music stream.
                        AudioManager.STREAM_MUSIC,
                        // Request permanent focus.
                        AudioManager.AUDIOFOCUS_GAIN);

                    // Start playback.


                    releaseMedia();
                    mediaPlayer = MediaPlayer.create(MainActivity.this, sound1.getAudio());

                    AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
                    result = audioManager.requestAudioFocus(afChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
                    mediaPlayer.start();
                    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){
                        @Override
                        public void onCompletion(MediaPlayer mediaPlayer){

                            releaseMedia();
                        }

                    });
            }
        });


    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...