سبد (0)

آموزش مدیریت صدا در اندروید

آموزش مدیریت صدا اندروید

شما می توانید به راحتی صدا یا تصویر تماس گیرنده را کنترل کنید، به عنوان مثال حالت سکوت، ویبره،صدا و غیره. اندروید کلاس AndroidManager را ارائه می دهد که دسترسی به این کنترل ها را مشخص می کند. برای اینکه از گروه AndroidManager استفاده کنید، ابتدا باید یک شئ از این کلاس را با فراخوانی getSystemService() ، ایجاد کنید.

ترکیب آن در زیر داده شده است  .

 

private AudioManager myAudioManager;
myAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

زمانی که شئ کلاس AndroidManager را ذکر می کنید، می توانید از روش setRingerMode برای تنظیم صدا یا تصویر تماس گیرنده در دستگاه خود استفاده کنید. ترکیب آن در زیر ارائه شده است .

 

myAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);

روش setRingerMode یک شماره کامل را به عنوان پارامتر می گیرد. برای هر مدل یک شماره ی کامل اختصاص داده می شود که بین سبک های مختلف تمایز ایجاد می کند. مدل های ممکن عبارتند از:

  • RINGER_MODE_VIBRATE

    این قابلیت دستگاه را در حالت ویبره قرار می دهد.
  • RINGER_MODE_NORMAL

    این قابلیت دستگاه را در حالت نرمال (صدا) قرار می دهد.
  • RINGER_MODE_SILENT

    این قابلیت دستگاه را در حالت سکوت قرار می دهد.

زمانی که قابلیت ها را تنظیم کردید، می توانید برای گرفتن تنظیمات حالت سیستم ,getRingerMode() را فرابخوانید، که ترکیب آن در زیر ارائه شده است.


int mod = myAudioManager.getRingerMode();‎‎
  •     adjustVolume(int direction, int flags)

این روش صدای پرکاربردترین جریان را تنظیم می کند.

  • getMode()

این روش آخرین شیوه را بازمی گرداند.

  • getStreamMaxVolume(int streamType)

این روش شاخص بلندترین صدا برای یک جریان خاص را بازمی گرداند.

  • getStreamVolume(int streamType)

این روش شاخص آخرین صدا برای یک جریان خاص را بازمی گرداند.

  • isMusicActive()

این روش چک می کند که آیا هیچ آهنگی فعال است یا نه.

  • startBluetoothSco()

این روش صدای اتصال بلوتوث SCO را آغاز می کند.

  • stopBluetoothSco()

این روش صدای اتصال بلوتوث SCO را متوقف می کند.

علاوه بر روش etRingerMode، روش های دیگری هم در گروه AndroidManager، برای کنترل صدا وجود دارند. این روش ها در لیست زیر ارائه شده اند.

مثال زیر استفاده از کلاس AndroidManager را توضیح می دهد. این مثال یک برنامه ی پایه ایجاد می کند که به شما اجازه می دهد تا شیوه های مختلف تماس گیرنده را برای دستگاه خود تنظیم کنید.

برای آزمایش این مثال، لازم است آن را روی یک دستگاه واقعی اجرا کنید.

  • برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان  AudioManager تحت بسته ی com.example.audiomanager نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target SDK و Compile With در آخرین ورژن Android SDK هستند تا از سطوح بالاتر API استفاده کنید.
  • فایل src/MainActivity.java را برای افزودن کد AudioManager تغییر دهید.
  • لی اوت فایل XML مربوط به res/layout/activity_main.xml را تغییر داده و اگر لازم است مولفه ی GUI را به آن اضافه کنید.
  • برنامه را اجرا کنید و یک دستگاه اجراکننده ی اندروید انتخاب کنید و برنامه را روی آن نصب کرده و نتایج را بررسی کنید.

در اینجا محتوای src/com.example.audiomanager/MainActivity.java را مشاهده می کنید.

 

package com.example.sairamkrishna.myapplication;
 
import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
 
import android.os.Bundle;
import android.os.Environment;
 
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
 
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.IOException;
 
 
public class MainActivity extends Activity {
   Button mode,ring,vibrate,silent;
   private AudioManager myAudioManager;
   
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      vibrate=(Button)findViewById(R.id.button3);
      ring=(Button)findViewById(R.id.button2);
      
      mode=(Button)findViewById(R.id.button);
      silent=(Button)findViewById(R.id.button4);
      myAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
      
      vibrate.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            myAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
            Toast.makeText(MainActivity.this,"Now in Vibrate Mode",Toast.LENGTH_LONG).show();
         }
      });
      
      ring.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            myAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
            Toast.makeText(MainActivity.this,"Now in Ringing Mode",Toast.LENGTH_LONG).show();
         }
      });
      
      silent.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            myAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
            Toast.makeText(MainActivity.this,"Now in silent Mode",Toast.LENGTH_LONG).show();
         }
      });
      
      mode.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            int mod=myAudioManager.getRingerMode();
            
            if(mod==AudioManager.RINGER_MODE_VIBRATE){
               Toast.makeText(MainActivity.this,"Now in Vibrate Mode",Toast.LENGTH_LONG).show();
            }
            
            else if(mod==AudioManager.RINGER_MODE_NORMAL){
               Toast.makeText(MainActivity.this,"Now in Ringing Mode",Toast.LENGTH_LONG).show();
            }
            
            else
            {
               Toast.makeText(MainActivity.this,"Now in Vibrate Mode",Toast.LENGTH_LONG).show();
            }
         }
      });
   }
   
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_main, menu);
      return true;
   }
   
   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      
      int id = item.getItemId();
      
      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
         return true;
      }
      return super.onOptionsItemSelected(item);
   }
}

در اینجا محتوای 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" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
 
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Android Audio Recording"
      android:id="@+id/textView"
      android:textSize="30dp"
      android:layout_alignParentTop="true"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorialspoint"
      android:id="@+id/textView2"
      android:textColor="#ff3eff0f"
      android:textSize="35dp"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/logo"
      android:layout_below="@+id/textView2"
      android:layout_alignLeft="@+id/textView2"
      android:layout_alignStart="@+id/textView2"
      android:layout_alignRight="@+id/textView2"
      android:layout_alignEnd="@+id/textView2" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Mode"
      android:id="@+id/button"
      android:layout_below="@+id/imageView"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_marginTop="59dp" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Ring"
      android:id="@+id/button2"
      android:layout_alignTop="@+id/button"
      android:layout_centerHorizontal="true" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="vibrate"
      android:id="@+id/button3"
      android:layout_alignTop="@+id/button2"
      android:layout_alignRight="@+id/textView"
      android:layout_alignEnd="@+id/textView" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Silent"
      android:id="@+id/button4"
      android:layout_below="@+id/button2"
      android:layout_alignLeft="@+id/button2"
      android:layout_alignStart="@+id/button2" />
      
</RelativeLayout>

در اینجا محتوای Strings.xml را مشاهده می کنید

 

<resources>
   <string name="app_name">My Application</string>
   <string name="hello_world">Hello world!</string>
   <string name="action_settings">Settings</string>
</resources>

در اینجا محتوای AndroidManifest.xml را مشاهده می کنید

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.audiomanager"
   android:versionCode="1"
   android:versionName="1.0" >
 
   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.sairamkrishna.myapplication"
         android:label="@string/app_name" >
      
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      
      </activity>
      
   </application>
</manifest>

اجازه بدهید برنامه ی Androidmanager شما را اجرا کنیم. فرض می کنیم که دستگاه موبایل اندروید خود را به کامپیوتر متصل کرده اید. برای اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکن Run  از تولبار کلیک کنید.

دکمه ی silent را انتخاب کنید.شما آیکون سایلنت را در Notification ملاحضه می کنید.

 

اکنون دکمه ی ring را انتخاب کرده و سپس دکمه ی Current Mode را فشار دهید تا اگر وضعیت آن تنظیم شده باشد، آن را ببینید

 

اکنون دکمه ی vibrate و سپس دکمه ی Current Mode را فشار دهید تا اگر تنظیم شده باشد آن را مشاهده کنید، که صفحه ی زیر را نمایش خواهد داد

 

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehiمجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامیپرداخت آنلاین -  بانک ملتمعرفی بیاموز در شبکه سهپرداخت آنلاین - بانک اقتصاد نوینپرداخت آنلاین - بانک سامان