بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

به اشتراک گذاری فایل از پوشه raw ، assets و ... (راهنما)

مدیریت گفتگو
Vahid 12 سال پیش
آخرین تغییر: 11 سال پیش

سلام ...
من چند وقت پیش دنبال راه حلی می گشتم که بتونم فایل های صوتی رو از پوشه raw یا assets کپی کنم ...
چند بار تاپیک زدم (مثل  این و این)، همچنین در اینجا و stackoverflow و کلا در گوگل  جستجو کردم ... ولی اون موقع به نتیجه مطلوبم نرسیدم ... (هرچند الان هم خیلی مطلوب نیست :D )

اما بلاخره تکه کدی رو پیدا کردم که حد اقل در همه شرایط کار میکنه و فایل ها رو ارسال میکنه! پس گفتم به اشتراک بذارم!

البته پیش از هر چیزی بگم که این کد اول یک کپی از فایل در sd میگیره و بعد اونو میفرسته ... که میتونید بعد از ارسال فایل رو هم پاک کنید. (دلیل مطلوب نبودن هم همینه!)

این هم کد:

 public void sendmp3(int paramInt)
{
byte[] arrayOfByte = (byte[]) null;
InputStream localInputStream = getBaseContext().getResources().openRawResource(paramInt);
try
{
arrayOfByte = new byte[localInputStream.available()];
localInputStream.read(arrayOfByte);
localInputStream.close();

if ( !new File("/sdcard/my_app/").exists())
new File("/sdcard/my_app/").mkdirs();
try
{
FileOutputStream localFileOutputStream = new FileOutputStream("/sdcard/my_app/" + "sound.mp3");
localFileOutputStream.write(arrayOfByte);
localFileOutputStream.flush();
localFileOutputStream.close();
sendBroadcast(new Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE",
Uri.parse("file://" + "/sdcard/my_app/" + "sound.mp3")));
File newfile = new File("/sdcard/my_app/", "sound.mp3");
String str = MimeTypeMap.getSingleton()
.getMimeTypeFromExtension(newfile.getName()
.substring(1 + newfile.getName().lastIndexOf(".")));
Intent localIntent = new Intent("android.intent.action.SEND");
localIntent.setType(str);
localIntent.putExtra("android.intent.extra.STREAM", Uri.fromFile(newfile));
startActivity(Intent.createChooser(localIntent, "Share using"));

}
catch (IOException e)
{
e.printStackTrace();
}

}
catch (IOException e)
{
e.printStackTrace();
}
}

و به این شکل میشه فراخوانی کرد:

 sendmp3(R.raw.running);

نظرات

YouNes Sh 12 سال پیش
اگه بخوام یه فایل صوتی از مموری کارت به اشتراک بزارم چطوری میشه؟

پاسخ‌ها 2

کیاپ 11 سال پیش

سلام

در فراخوانیش مشکل بوجود امد

running که نوشتین چیه؟

من یه لیست ویو از موسیقی دارم و میخوام از متد شما استفاده کنم.باید چکار کنم؟میخوام روی هر ایتمی که نگه میداره اهنگ اون ایتم رو به اشتراک بگذاره.

ممنون

 	mainList.setOnItemLongClickListener(new OnItemLongClickListener() {

			@Override
			public boolean onItemLongClick(final AdapterView<?> p, View v,
					final int po, long id) {
				
				
				return true;
			}
		});

نظرات

Vahid 11 سال پیش
Running اسمه یک فایل صوتی نمونه هست
Morteza 11 سال پیش

با سلام برای پخش فایل صوتی از پوشه raw نیازی به کپی آن در SD CARD نیست.
من از کلاس زیر استفاده میکنم که قسمت های مختلفش رو داخل کد توضیح دادم :

 public class MusicManager {

private MediaPlayer player;
private boolean keepMusicOn;
private boolean keepLooping;
private int soundId;
private String soundFileName;

//پخش فایل صوتی
public void playMusic(Context context, String fileName) {
player = null;
soundFileName = fileName.replace(" ", "").replace("\n", "");
soundId = G.context.getResources().getIdentifier(soundFileName, "raw", G.context.getPackageName());
if (player == null) {
player = MediaPlayer.create(context, soundId);
player.setLooping(keepLooping);

try {
player.prepare();
}
catch (IllegalStateException e) {}
catch (IOException e) {}
}

if ( !player.isPlaying()) {
player.start();
}

keepMusicOn = false;
}

//متوقف کردن پخش به طوری که قابلیت ادامه دارد
public void keepMusicOn() {
keepMusicOn = true;
}


public void pauseMusic() {
if (player != null) {
if ( !keepMusicOn) {
player.pause();
}
}
}

//متوقف کردن پخش به طوری که قابلیت ادامه ندارد
public void resetMusic() {
if (player != null) {
player.reset();
}
}

//ادامه پخش
public void resumMusic() {
if (player != null) {
try {
player.prepare();
}
catch (IllegalStateException e) {}
catch (IOException e) {}

if ( !player.isPlaying()) {
player.start();
}
}
}

//بعد از اتمام موسیقی ،از ابتدا شروع به پخش میکند
public void setLooping(boolean value) {
keepLooping = value;
}

}

که بنا بر نیاز میتونید متدهای اون را تغییر بدید یا به حالت Static تبدیل کنید

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

         MusicManager musicManager = new MusicManager();
musicManager.playMusic(G.context, "نام فایل صوتی شما");

کافی است در تکه کد بالا نام فایل صوتی موجود در پوشه raw رو قرار بدید

نظرات

Vahid 11 سال پیش
دوست من اینجا در مورد اشتراک گذاری فایل ها از پوشه Raw صحبت کردیم و نه اجرای اون
Morteza 11 سال پیش
حق باشماست ،گویا من متن سوال رو درست متوجه نشدم

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .