کلاس MediaPlayer n جزء ضروری چارچوب رسانه است. یک شی از این کلاس می تواند با حداقل تنظیمات، صدا و تصویر را واکشی، رمزگشایی و پخش کند. MediaPlayer از چندین منبع رسانه پشتیبانی می کند، از جمله:
منابع محلی
URI های داخلی، مانند نمونه ای که ممکن است از یک Content Resolver دریافت کنید
URL های خارجی (جریان سازی)
برای فهرستی از فرمتهای رسانهای که اندروید پشتیبانی میکند، به صفحه فرمتهای رسانه پشتیبانی شده مراجعه کنید.
نمونه هایی از کار با منابع صوتی
در اینجا مثالی از نحوه پخش صدایی که به عنوان یک منبع خام محلی در دسترس است (ذخیره شده در دایرکتوری res/raw/ برنامه شما) آورده شده است:
کاتلین
varmediaPlayer=MediaPlayer.create(context,R.raw.sound_file_1)mediaPlayer.start()// no need to call prepare(); create() does that for you
جاوا
MediaPlayermediaPlayer=MediaPlayer.create(context,R.raw.sound_file_1);mediaPlayer.start();// no need to call prepare(); create() does that for you
در این مورد، یک منبع "خام" فایلی است که سیستم سعی نمی کند به روش خاصی آن را تجزیه کند. با این حال، محتوای این منبع نباید صوتی خام باشد. باید یک فایل رسانه ای با کدگذاری و فرمت مناسب در یکی از فرمت های پشتیبانی شده باشد.
و در اینجا نحوه بازی از یک URI موجود در سیستم به صورت محلی (که به عنوان مثال از طریق یک Content Resolver به دست آورده اید):
کاتلین
valmyUri:Uri=....// initialize Uri herevalmediaPlayer=MediaPlayer().apply{setAudioAttributes(AudioAttributes.Builder().setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).setUsage(AudioAttributes.USAGE_MEDIA).build())setDataSource(applicationContext,myUri)prepare()start()}
جاوا
UrimyUri=....;// initialize Uri hereMediaPlayermediaPlayer=newMediaPlayer();mediaPlayer.setAudioAttributes(newAudioAttributes.Builder().setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).setUsage(AudioAttributes.USAGE_MEDIA).build());mediaPlayer.setDataSource(getApplicationContext(),myUri);mediaPlayer.prepare();mediaPlayer.start();
پخش از یک URL راه دور با استفاده از جریان HTTP به این صورت است:
کاتلین
valurl="http://........"// your URL herevalmediaPlayer=MediaPlayer().apply{setAudioAttributes(AudioAttributes.Builder().setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).setUsage(AudioAttributes.USAGE_MEDIA).build())setDataSource(url)prepare()// might take long! (for buffering, etc)start()}
جاوا
Stringurl="http://........";// your URL hereMediaPlayermediaPlayer=newMediaPlayer();mediaPlayer.setAudioAttributes(newAudioAttributes.Builder().setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).setUsage(AudioAttributes.USAGE_MEDIA).build());mediaPlayer.setDataSource(url);mediaPlayer.prepare();// might take long! (for buffering, etc)mediaPlayer.start();
از آماده سازی ناهمزمان برای بهبود عملکرد استفاده کنید
هنگام استفاده از MediaPlayer عملکرد را در نظر داشته باشید. برای مثال، اجرای فراخوانی prepare() میتواند زمان زیادی طول بکشد، زیرا ممکن است شامل واکشی و رمزگشایی دادههای رسانه باشد. بنابراین، مانند هر روشی که ممکن است اجرای آن زمان زیادی طول بکشد، هرگز آن را از رشته رابط کاربری برنامه خود فراخوانی نکنید . انجام این کار باعث میشود تا زمانی که روش برگردد، UI پاسخ نمیدهد، که تجربه کاربری بدی است و میتواند باعث خطای ANR (Application Not Responding) شود.
برای جلوگیری از آویزان شدن رشته رابط کاربری خود، یک رشته دیگر ایجاد کنید تا MediaPlayer آماده شود و پس از اتمام به موضوع اصلی اطلاع دهید. این فریم ورک راه مناسبی را برای انجام متد prepareAsync() برای انجام این کار ارائه میکند. این روش شروع به آماده سازی رسانه در پس زمینه می کند و بلافاصله برمی گردد. هنگامی که آماده سازی رسانه تمام شد، متد onPrepared()MediaPlayer.OnPreparedListener که از طریق setOnPreparedListener() پیکربندی شده است فراخوانی می شود.
بیشتر بدانید
Jetpack Media3 راه حل پیشنهادی برای پخش رسانه در برنامه شما است. در مورد آن بیشتر بخوانید .
این صفحات موضوعات مربوط به ضبط، ذخیره و پخش صدا و تصویر را پوشش می دهند:
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Get started with Media Player\n\nThis document introduces the basic concepts you should\nbe familiar with before you work with Media Player.\n\nSound and video classes\n-----------------------\n\nThe following classes play sound and video in the Android framework:\n\n- [`MediaPlayer`](/reference/android/media/MediaPlayer): This class is the primary API for playing sound and video.\n- [`AudioManager`](/reference/android/media/AudioManager): This class manages audio sources and audio output on a device.\n\nManifest declarations\n---------------------\n\nBefore you start development on your application using MediaPlayer, make sure\nyour manifest has the appropriate declarations to allow use of related features.\n\n- **Internet Permission:** If you are using MediaPlayer to stream\n network-based content, your application must request network access.\n\n \u003cuses-permission android:name=\"android.permission.INTERNET\" /\u003e\n\n- **Wake Lock Permission:** If your player application needs to keep the\n screen from dimming or the processor from sleeping, or uses the\n [`MediaPlayer.setScreenOnWhilePlaying(boolean)`](/reference/android/media/MediaPlayer#setScreenOnWhilePlaying(boolean)) or\n [`MediaPlayer.setWakeMode(android.content.Context, int)`](/reference/android/media/MediaPlayer#setWakeMode(android.content.Context,%20int)) methods, you\n must request this permission.\n\n \u003cuses-permission android:name=\"android.permission.WAKE_LOCK\" /\u003e\n\nUse the MediaPlayer class\n-------------------------\n\nThe [`MediaPlayer`](/reference/android/media/MediaPlayer) class is n essential component of the media framework.\nAn object of this class can fetch, decode, and play\nboth audio and video with minimal setup. `MediaPlayer` supports several media\nsources, including:\n\n- Local resources\n- Internal URIs, such as one you might obtain from a Content Resolver\n- External URLs (streaming)\n\nFor a list of media formats that Android supports, see the [Supported Media\nFormats](/guide/topics/media/media-formats) page.\n\n### Examples of working with audio sources\n\nHere is an example of how to play audio that's available as a local raw resource\n(saved in your application's `res/raw/` directory): \n\n### Kotlin\n\n var mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1)\n mediaPlayer.start() // no need to call prepare(); create() does that for you\n\n### Java\n\n MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);\n mediaPlayer.start(); // no need to call prepare(); create() does that for you\n\nIn this case, a \"raw\" resource is a file that the system does not try to parse\nin any particular way. However, the content of this resource shouldn't be raw\naudio. It should be a properly encoded and formatted media file in one of the\nsupported formats.\n\nAnd here is how you might play from a URI available locally in the system (that\nyou obtained through a Content Resolver, for instance): \n\n### Kotlin\n\n val myUri: Uri = .... // initialize Uri here\n val mediaPlayer = MediaPlayer().apply {\n setAudioAttributes(\n AudioAttributes.Builder()\n .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)\n .setUsage(AudioAttributes.USAGE_MEDIA)\n .build()\n )\n setDataSource(applicationContext, myUri)\n prepare()\n start()\n }\n\n### Java\n\n Uri myUri = ....; // initialize Uri here\n MediaPlayer mediaPlayer = new MediaPlayer();\n mediaPlayer.setAudioAttributes(\n new AudioAttributes.Builder()\n .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)\n .setUsage(AudioAttributes.USAGE_MEDIA)\n .build()\n );\n mediaPlayer.setDataSource(getApplicationContext(), myUri);\n mediaPlayer.prepare();\n mediaPlayer.start();\n\nPlaying from a remote URL using HTTP streaming looks like this: \n\n### Kotlin\n\n val url = \"http://........\" // your URL here\n val mediaPlayer = MediaPlayer().apply {\n setAudioAttributes(\n AudioAttributes.Builder()\n .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)\n .setUsage(AudioAttributes.USAGE_MEDIA)\n .build()\n )\n setDataSource(url)\n prepare() // might take long! (for buffering, etc)\n start()\n }\n\n### Java\n\n String url = \"http://........\"; // your URL here\n MediaPlayer mediaPlayer = new MediaPlayer();\n mediaPlayer.setAudioAttributes(\n new AudioAttributes.Builder()\n .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)\n .setUsage(AudioAttributes.USAGE_MEDIA)\n .build()\n );\n mediaPlayer.setDataSource(url);\n mediaPlayer.prepare(); // might take long! (for buffering, etc)\n mediaPlayer.start();\n\n| **Note:** If you're passing a URL to stream an online media file, the file must be capable of progressive download.\n| **Caution:** You must either catch or pass [`IllegalArgumentException`](/reference/java/lang/IllegalArgumentException) and [`IOException`](/reference/java/io/IOException) when using [`setDataSource()`](/reference/android/media/MediaPlayer#setDataSource(android.content.Context,%20android.net.Uri)) because the file you are referencing might not exist.\n\nUse Asynchronous preparation to improve performance\n---------------------------------------------------\n\nKeep performance in mind when you use [`MediaPlayer`](/reference/android/media/MediaPlayer). For example, the call\nto [`prepare()`](/reference/android/media/MediaPlayer#prepare()) can take a long time to execute, because it might involve\nfetching and decoding media data. So, like any method that may take a long time\nto execute, **never call it from your application's UI thread**. Doing so causes\nthe UI to stop responding until the method returns, which is a bad user\nexperience and can cause an ANR (Application Not Responding) error.\n\nTo avoid hanging your UI thread, spawn another thread to prepare the\n[`MediaPlayer`](/reference/android/media/MediaPlayer) and notify the main thread when done. The framework supplies\na convenient way to accomplish the [`prepareAsync()`](/reference/android/media/MediaPlayer#prepareAsync()) method for doing this\ntask. This method starts preparing the media in the background and returns\nimmediately. When the media is done preparing, the [`onPrepared()`](/reference/android/media/MediaPlayer.OnPreparedListener#onPrepared(android.media.MediaPlayer)) method\nof the [`MediaPlayer.OnPreparedListener`](/reference/android/media/MediaPlayer.OnPreparedListener), configured through\n[`setOnPreparedListener()`](/reference/android/media/MediaPlayer#setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener)) is called.\n\nLearn more\n----------\n\nJetpack Media3 is the recommended solution for media playback in your app. [Read\nmore](/media/media3) about it.\n\nThese pages cover topics relating to recording, storing, and playing back audio\nand video:\n\n- [Supported Media Formats](/guide/topics/media/media-formats)\n- [MediaRecorder](/guide/topics/media/mediarecorder)\n- [Data Storage](/guide/topics/data/data-storage)"]]