Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone





Clound SSD Virtual Server

Android SeekBar Control Audio Sound Volume (AudioManager)

Android SeekBar Control Audio Sound Volume (AudioManager) ตัวอย่างการใช้ SeekBar ในการแสดงสถานะของ Audio Sound Volume หรือความดังของลำโพงบนเครื่อง Smartphone หรือ Tablets โดยจะใช้ SeekBar แสดงตำแหน่ง และสามารถใช้ SeekBar ทำการเพิ่มหรือลดเสียงของลำโพง

Android SeekBar Audio Control Sound Volume


ในการเขียน Android เพื่อควบคุม Audio Sound จะใช้ class ของ AudioManager และ AUDIO_SERVICE

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
// audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)) // Sound Volume

โดยใช้คำสั่งง่าย ๆ ก็สามารถเรียกค่าของ Sound Volume มาแสดงได้


Example 1 แสดง Audio Sound Volume บน SeekBar แบบง่าย ๆ

โครงสร้างของไฟล์ประกอบด้วย 2 ไฟล์คือ MainActivity.java, activity_main.xml

Android SeekBar Control Audio Sound Volume

activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="34dp"
        android:text="TextView" />

    <SeekBar
        android:id="@+id/seekBar2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="26dp" />

</RelativeLayout>


MainActivity.java
package com.myapp;

import android.media.AudioManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;

public class MainActivity extends Activity {

	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // call method ValumnControls()
        ValumnControls();      
        
    }
  
    
    
    private void ValumnControls()
    {
        try
        {
            final TextView txtView = (TextView)findViewById(R.id.textView1); // TextView
        	SeekBar seekBar2 = (SeekBar)findViewById(R.id.seekBar2); // SeekBar
        	
        	final AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
            seekBar2.setMax(audioManager
                    .getStreamMaxVolume(AudioManager.STREAM_MUSIC));
            seekBar2.setProgress(audioManager
                    .getStreamVolume(AudioManager.STREAM_MUSIC));   
            
            // TextView
            txtView.setText(String.valueOf(audioManager
                    .getStreamVolume(AudioManager.STREAM_MUSIC)));


            seekBar2.setOnSeekBarChangeListener(new OnSeekBarChangeListener() 
            {
                public void onStopTrackingTouch(SeekBar arg0) 
                {
                }

                public void onStartTrackingTouch(SeekBar arg0) 
                {
                }

                public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) 
                {
                    audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
                            progress, 0);
                    txtView.setText(String.valueOf(progress));
                }
            });
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
	
}


Screenshot

Android SeekBar Control Audio Sound Volume

แสดง SeekBar และตำแหน่งของ Audio Sound Volume ซึ่งสามารถเลื่อน SeekBar เพื่อเพิ่มหรือลดเสียงได้








Example 2 ทดสอบใช้งาน Audio Sound Volume ร่วมกับการเล่นเพลง mp3

โครงสร้างของไฟล์ประกอบด้วย 2 ไฟล์คือ MainActivity.java, activity_main.xml

สำหรับตัวอย่างการเช่นไฟล์ mp3 สามารถอ่านได้จาก 2 ตัวอย่างนี้


Android SeekBar Control Audio Sound Volume

ออกแบบ XML Layout ดังภาพ

activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="62dp"
        android:layout_marginTop="89dp"
        android:text="Play" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="34dp"
        android:text="TextView" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button1"
        android:layout_alignBottom="@+id/button1"
        android:layout_toRightOf="@+id/button1"
        android:text="Pause" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button2"
        android:layout_alignBottom="@+id/button2"
        android:layout_toRightOf="@+id/button2"
        android:text="Stop" />

    <SeekBar
        android:id="@+id/seekBar1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button2"
        android:layout_alignParentLeft="true" />

    <SeekBar
        android:id="@+id/seekBar2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/seekBar2"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="16dp"
        android:text="Sound Volume Control" />

</RelativeLayout>


MainActivity.java
package com.myapp;


import java.io.IOException;

import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.view.MotionEvent;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;

public class MainActivity extends Activity {

	private MediaPlayer mMedia;
	private Handler handler = new Handler();
	private SeekBar seekBar1;

	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // call method ValumnControls()
        ValumnControls();
        
        
        if(mMedia != null){
       	 mMedia.release();  
        }
        
        final TextView txtView = (TextView)findViewById(R.id.textView1);
        txtView.setText("Source : music.mp3");
        
        /* Resource in R.
         * mMedia = MediaPlayer.create(this, R.raw.music);
         * mMedia.start();
         */
        
        /*
         * from DataSource
         * mMedia = new MediaPlayer();
         * mMedia.setDataSource("https://www.thaicreate.com/music/mymusic.mp3");
         * mMedia.start();
         * 
         */
        mMedia = MediaPlayer.create(this, R.raw.music);    
        
        // seekBar1 Control media
        seekBar1 = (SeekBar)findViewById(R.id.seekBar1);
        seekBar1.setMax(mMedia.getDuration());
        seekBar1.setOnTouchListener(new OnTouchListener() {
        	public boolean onTouch(View v, MotionEvent event) {
        		UpdateseekChange(v);
			return false; 
			}
		});



        
        final Button btn1 = (Button) findViewById(R.id.button1); // Start
        final Button btn2 = (Button) findViewById(R.id.button2); // Pause
        final Button btn3 = (Button) findViewById(R.id.button3); // Stop
        
        
        // Start
        btn1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            	txtView.setText("Playing : music.mp3....");
            	mMedia.start();
            	startPlayProgressUpdater();
            	btn1.setEnabled(false);
            	btn2.setEnabled(true);
            	btn3.setEnabled(true);
            }
        });
        
        // Pause
        btn2.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            	txtView.setText("Pause : music.mp3");
            	mMedia.pause();
            	btn1.setEnabled(true);
            	btn2.setEnabled(false);
            	btn3.setEnabled(false);
            }
        });  
        
        // Stop
        btn3.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            	txtView.setText("Stop Play : music.mp3");
            	mMedia.stop();
            	btn1.setEnabled(true);
            	btn2.setEnabled(false);
            	btn3.setEnabled(false);
            	try {
					mMedia.prepare();
					mMedia.seekTo(0);
				} catch (IllegalStateException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
            	
            }
        }); 
        
    }
    
    private void UpdateseekChange(View v){
    	if(mMedia.isPlaying()){
	    	SeekBar sb = (SeekBar)v;
	    	mMedia.seekTo(sb.getProgress());
		}
    }
    
    public void startPlayProgressUpdater() {
    	seekBar1.setProgress(mMedia.getCurrentPosition());

		if (mMedia.isPlaying()) {
			Runnable notification = new Runnable() {
		        public void run() {
		        	startPlayProgressUpdater();
				}
		    };
		    handler.postDelayed(notification,1000);
    	}
    } 
    
    
    @Override
    protected void onDestroy() {
   // TODO Auto-generated method stub
     super.onDestroy();
     if(mMedia != null){
    	 mMedia.release();  
     }
    }
    
    
    private void ValumnControls()
    {
        try
        {
        	SeekBar seekBar2 = (SeekBar)findViewById(R.id.seekBar2);
        	final AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
            seekBar2.setMax(audioManager
                    .getStreamMaxVolume(AudioManager.STREAM_MUSIC));
            seekBar2.setProgress(audioManager
                    .getStreamVolume(AudioManager.STREAM_MUSIC));   


            seekBar2.setOnSeekBarChangeListener(new OnSeekBarChangeListener() 
            {
                public void onStopTrackingTouch(SeekBar arg0) 
                {
                }

                public void onStartTrackingTouch(SeekBar arg0) 
                {
                }

                public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) 
                {
                    audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
                            progress, 0);
                }
            });
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
	
}









Screenshot

Android SeekBar Control Audio Sound Volume

ทดสอบการใช้งานจริงร่วมกับการเล่นเพลง mp3

   
Share


ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท


ลองใช้ค้นหาข้อมูล


   


Bookmark.   
       
  By : ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ)
  Score Rating :  
  Create/Update Date : 2012-08-25 15:47:51 / 2017-03-26 22:41:58
  Download : No files
 Sponsored Links / Related

 
Android Play VDO เล่นวีดีโอไฟล์ง่าย ๆ บน Android ด้วย VideoView
Rating :

 
Android Play mp3 เล่น Music media ไฟล์ mp3 และไฟล์อื่น ๆ ด้วย MediaPlayer
Rating :


ThaiCreate.Com Forum


Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว


สุดยอด Source Code V2.0
 

แจ้งชำระเงิน/โอนเงิน
 

Hit Link
   


Acc : thaicreate@hotmail.com






Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2019 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
for Contact Us : [Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่