با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش برنامه نویسی اندروید را دنبال می کنند. در بخش قبلی به قابلیت ضبط و پخش صدا در اندروید اشاره کردیم، علاوه بر این، قابلیت Audio Manager در اندروید به شما اجازه ی مدیریت و تغییرات volume صدا را می دهد،با این قابلیت شما می توانید انواع حالت های سکوت ،ارتعاش ، صدای بلند و … را روی صدای مورد نظر اعمال کنید. برای این منظور اندروید کلاس AudioManager را فراهم می کند که به شما اجازه ی دسترسی به این تغییرات را می دهد، برای آشنایی بیشتر با قابلیت مدیریت صدا در اندروید در ادامه ی مباحث این بخش با ما همراه باشید.
در ادامه ی مباحث برای آشنایی شما با مدیریت صدا در اندروید ، اصول کار و انجام یک مثال ساده در این زمینه را ارائه کرده ایم.
ابتدا باید با استفاده از متد () getSystemService یک شی از کلاس AudioManager ایجاد کنید.
ساختار استفاده از کلاس AudioManager :
1 2 | private AudioManager myAudioManager; myAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); |
می توانید از متد setRingerMode برای تنظیم پروفایل صدا یا رینگر دستگاه خود استفاده کنید.
ساختار :
1 | myAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); |
متد setRingerMode یک عدد صحیح را به عنوان یک پارامتر می گیرد.
برای هر حالت یک عدد صحیح اختصاص داده می شود که بین حالت های مختلف متفاوت خواهد بود.
حالت های ممکن:
ردیف | حالت و توضیحات مربوطه |
---|---|
۱ | RINGER_MODE_VIBRATE این حالت دستگاه را روی حالت ویبره (vibrate) می برد |
۲ | RINGER_MODE_NORMAL این دستگاه را در حالت عادی قرار می دهد. |
۳ | RINGER_MODE_SILENT این دستگاه را روی حالت سایلنت (silent) می برد. |
پس ار تنظیم حالت می توانید متد () getRingerMode را فرخوانی کنید.
با استفاده از متد فوق می توانید وضعیت سیستم را دریافت کنید که ساختار به صورت زیر است:
1 | int mod = myAudioManager.getRingerMode(); |
به غیر از متد getRingerMode، متد های دیگر موجود در کلاس AudioManager برای کنترل حجم و سایر حالت ها وجود دارد.
این متدهای به شرح زیر است:
ردیف | متد و توضیحات مربوطه |
---|---|
۱ | adjustVolume(int direction, int flags) این متد volume صدا را تنظیم می کند. |
۲ | getMode() این متد حالت جاری صدا را بر می گرداند. |
۳ | getStreamMaxVolume(int streamType) این متد حداکثر volume صدا را برمی گرداند. |
۴ | getStreamVolume(int streamType) این متد volume جاری را برمی گرداند. |
۵ | isMusicActive() این متد فعال بودن یک موزیک را چک می کند. |
۶ | startBluetoothSco() این متد اتصال bluetooth SCO audio را شروع می کند. |
۷ | stopBluetoothSco() این متد اتصال bluetooth SCO audio را متوقف می کند. |
این مثال چگونگی کار با AudioManager را نشان می دهد.
این برنامه کاربردی را ایجاد می کند که به شما امکان می دهد حالت های مختلف رینگر را برای دستگاه خود تنظیم کنید.
مراحل | توضیحات |
---|---|
۱ | مراحل ایجاد برنامه در اندروید استدیو را طبق بخش های قبلی دنبال کرده و نام پکیج را com.pvlearn.myapplication قرار بدهید. |
۲ | به محتوای فایل src/MainActivity.java کد لازم برای مدیریت صدا را اضافه کنید. |
۳ | طراحی لازم را برای مدیریت صدا به فایل res/layout/activity_main.xml اضافه کنید. |
۴ | اجزای رشته ای مورد نیاز را به res/values/string.xml اضافه کنید. |
۵ | مجوزهای لازم را به فایل AndroidManifest.xml اضافه کنید. |
۶ | برنامه را اجرا کنید تا شبیه ساز اندروید نتیجه را نمایش دهد. |
محتوای فایل src/MainActivity.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | package com.example.sairamkrishna.myapplication; import android.app.Activity; import android.content.Context; import android.media.AudioManager; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; 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(); } } }); } } |
محتوای فایل activity_main.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | <?xml version="1.0" encoding="utf-8"?> <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="Pvlearn" 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/abc" 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:
1 2 3 | <resources> <string name="app_name">My Application</string> </resources> |
محتوای فایل AndroidManifest.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.sairamkrishna.myapplication" > <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> |
برای اجرای برنامه ی اندرویدی خود یکی از فایل های activity در برنامه ی خود کلیک کنید.
سپس روی نماد (Run) از نوار ابزار برای شروع اجرای برنامه کلیک کنید.
اکنون روی دکمه ی silent ، سپس آیکون سایلنت را در نوار اعلام مشاهده می کنید:
سپس روی ring کلیک کنید تا وضعیت را مشاهده کنید:
سپس روی دکمه ی Vibrate کلیک کنید تا نتیجه را به صورت زیر مشاهده کنید که آیکون ویبره در نوار اعلان نمایش داده می شود:
همانطور که شما می توانید صداهای مختلف را در اندروید ضبط و ذخیره کنید، می توانید با استفاده از قابلیت Audio Manager در اندروید انواع حالت های صدا را در دستگاه اندروید خود مدیریت کنید، قابلیت مدیریت صدا در اندروید از ویژگی های منحصر به فرد این سیستم است.
در بخش بعدی به قابلیت تکمیل خودکار کد در اندروید خواهیم پرداخت.