ورود

View Full Version : این کد چه اشتباهی در آدرس دهی یه آهنگ بعنوان زنگ موبایل داره ؟



moralschool
چهارشنبه 10 اردیبهشت 1393, 12:20 عصر
کدی که در دکمه برای تعیین آهنگ به عنوان زنگ گوشی استفاده کردم اینه :



ImageView zang1 = (ImageView) findViewById(R.id.imageView7);
zang1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

saveas1(RingtoneManager.TYPE_RINGTONE);

}
});



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

که در اصل میخوام موسیقی که در پوشه ی my_zang در sdcard هست و نامش هم zang1 با فرمت mp3 هست به

عنوان زنگ گوشی انتخاب بشه :



public boolean saveas1(int ressound){
byte[] buffer=null;
InputStream fIn = getBaseContext().getResources().openRawResource

(ressound);
int size=50;

try {
size = fIn.available();
buffer = new byte[size];
fIn.read(buffer);
fIn.close();
} catch (IOException e) {
// TODO Auto-generated catch block
}

String path="/sdcard/my_zang/";
String filename="zang1.mp3";

boolean exists = (new File(path)).exists();
if (!exists){new File(path).mkdirs();}

FileOutputStream save;
try {
save = new FileOutputStream(path+filename);
save.write(buffer);
save.flush();
save.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,

Uri.parse("file://"+path+filename)));

File k = new File(path, filename);

ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "SHRingtone");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, "Sherlock ");
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
values.put(MediaStore.Audio.Media.IS_ALARM, false);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);

Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getA bsolutePath

());
getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" +

k.getAbsolutePath() + "\"", null);
Uri newUri = getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(this,

RingtoneManager.TYPE_RINGTONE, newUri);



return true;

}


آیا مسیر دهی اشتباهه که برنامه خطا میده ؟
مشکل از کجاست لطفا راهنمایی کنید
ممنون

moralschool
چهارشنبه 10 اردیبهشت 1393, 19:09 عصر
کسی میتونه راهنمایی کنه ؟

smemamian
چهارشنبه 10 اردیبهشت 1393, 19:25 عصر
خب دوست عزیز چه خطایی میده ؟
متن خطا رو بذارید.

moralschool
چهارشنبه 10 اردیبهشت 1393, 20:25 عصر
وقتی روی دکمه تعیین آهنگ برای زنگ موبایل کلیک میشه ، می نویسه :
( متاسفانه برنامه شما متوقف شده است )

saeed_g21
چهارشنبه 10 اردیبهشت 1393, 20:49 عصر
چه روی دستگاه مجازی تست کرده باشی چه با دستگاه واقعی که وصل شده باشه به Eclips لاگ مینویسه

در قسمت DDMS میتونی Logs رو بخونی

وقتی خطا میده برنگ قرمز مشخص میکنه و یه چیزایی مینویسه همون چیزارو بده

moralschool
چهارشنبه 10 اردیبهشت 1393, 21:20 عصر
روی مسیری که دادم خطا میده ...
ببینید من فایلم توی پوشه raw نیست
از اینترنت دانلود میشه و در پوشه ی my_zang در sdcard ذخیره میشه
حالا وقتی میخوام از اون پوشه فراخوانی کنم خطا میده

saeed_g21
چهارشنبه 10 اردیبهشت 1393, 21:49 عصر
مجوزهای لازم رو دادی بهش ؟

moralschool
چهارشنبه 10 اردیبهشت 1393, 22:51 عصر
بله مجوز ها رو دادم
فقط آدرس دهی اشتباهه
لطفا دوستانی که سر در میارن راهنمایی کنند
ممنونم

moralschool
پنج شنبه 11 اردیبهشت 1393, 08:10 صبح
برای آدرس دهی از پوشه raw کدهام اینه که بخوبی جواب میده :

حالا میخوام بدونم اگه بخوام بجای آدرس دهی raw از یه پوشه که در sdcard هست مسیر رو تعیین کنم چیکار کنم ؟



public boolean saveas15(int type) {
byte[] buffer = null;
InputStream fIn = getBaseContext().getResources().openRawResource(
R.raw.zang1);
int size = 0;

try {
size = fIn.available();
buffer = new byte[size];
fIn.read(buffer);
fIn.close();
} catch (IOException e) {
return false;
}

String path = Environment.getExternalStorageDirectory().getPath( )
+ "/media/audio/ringtones/";

String filename = "zang1.mp3";

boolean exists = (new File(path)).exists();
if (!exists) {
new File(path).mkdirs();
}

FileOutputStream save;
try {
save = new FileOutputStream(path + filename);
save.write(buffer);
save.flush();
save.close();
} catch (FileNotFoundException e) {
return false;
} catch (IOException e) {
return false;
}

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.parse("file://" + path + filename)));

File k = new File(path, filename);

ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, filename);
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");

// This method allows to change Notification and Alarm tone also. Just
// pass corresponding type as parameter
if (RingtoneManager.TYPE_RINGTONE == type) {
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
} else if (RingtoneManager.TYPE_NOTIFICATION == type) {
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
} else if (RingtoneManager.TYPE_ALARM == type) {
values.put(MediaStore.Audio.Media.IS_ALARM, true);
}

Uri uri = MediaStore.Audio.Media.getContentUriForPath(k
.getAbsolutePath());
Uri newUri = Zang.this.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(Zang.t his, type,
newUri);

// Insert it into the database
this.getContentResolver()
.insert(MediaStore.Audio.Media.getContentUriForPat h(k
.getAbsolutePath()), values);

return true;
}

moralschool
پنج شنبه 11 اردیبهشت 1393, 20:00 عصر
دوستان برنامه نویس لطفا راهنمایی کنید .

moralschool
جمعه 12 اردیبهشت 1393, 19:16 عصر
اصلا اگه کسی بتونه یه منبع معرفی کنه که در مورد نحوه آدرس دهی ها مخصوصا کار با حافظه خارجی آموزش بده ممنون میشم
انگیزه دوستان برای پاسخگویی به سوالات خیلی زیاد نیست !

moralschool
شنبه 13 اردیبهشت 1393, 11:46 صبح
از آقای علیرضا گلمکانی بابت پاسخ به این سوال تشکر میکنم و کد صحیح برای استفاده از یه آهنگ که در حافظه جانبی گوشی هست ، به عنوان زنگ موبایل ، برای استفاده سایر دوستان قرار میدم
امیدوارم برای شما هم مفید واقع بشه ...


File root = android.os.Environment.getExternalStorageDirectory ();
File dir = new File (root.getAbsolutePath() + "/zang_folder");
String filename = "my_zang.mp3";
File k = new File(dir, filename);

ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "zang_name");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, "cssounds ");
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
values.put(MediaStore.Audio.Media.IS_ALARM, false);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);

//Insert it into the database
Uri newUri= this.getContentResolver().insert(MediaStore.Audio. Media.getContentUriForPath(k.getAbsolutePath()), values);

RingtoneManager.setActualDefaultRingtoneUri(
this,
RingtoneManager.TYPE_RINGTONE,
newUri
);
return true;
}


بجای zang_folder اسم فولدری که فایل موسیقی توش هست رو بنویسید
بجای my_zang اسم فایل موسیقی رو بنویسید
و بجای zang_name اسمی رو که میخواید در قسمت زنگ های موبایل گوشی نمایش داده بشه بنویسید

moralschool
جمعه 19 اردیبهشت 1393, 00:35 صبح
دو تا سوال :

1-
من برای اینکه صدای آهنگ پیامک ها و زنگ هشدار رو تغییر بدم بجای کد زیر :


RingtoneManager.TYPE_RINGTONE



از این کدها استفاده کردم :


RingtoneManager.TYPE_NOTIFICATION,

و

RingtoneManager.TYPE_ALARM,



و البته از قسمت values هم اونها رو true میکنم ...
ولی وقتی روی گوشیم تست میکنم اجرا نمیشه و همون آهنگ قبلی گوشی پخش میشه !

علتش چیه ؟

2-
برنامه ای که من دارم روش کار میکنم سه تا دکمه داره که یکیش برای تعیین بعنوان زنگ موبایل ، یکی برای زنگ پیامک و یکی برای آلارم هست
حالا وقتی هر کدوم رو انتخاب میکنم می بینم که زنگ دوتای دیگه بر میگرده به زنگ پیشفرض گوشی !
در صورتی که باید اگه هر سه دکمه انتخاب بشن ، هر سه تا در قسمت تنظیمات اعمال بشه ولی الان اینجوری نیست و با انتخاب هر دکمه زنگ مورد نظر اعمال میشه ولی زنگ دوتای دیگه به پیشفرض بر میگرده
چیکار باید بکنم ؟
ممنون

darkenerboy
جمعه 19 اردیبهشت 1393, 07:41 صبح
این کد (http://barnamenevis.org/showthread.php?447908-%D8%A7%DB%8C%D9%86-%D9%87%D9%85-%DA%A9%D8%AF&p=2019422&viewfull=1#post2019422) رو ببین

darkenerboy
جمعه 19 اردیبهشت 1393, 07:50 صبح
لطفا یه نمونه برای رینگتون بزارید ( زنگ تماس ، زنگ پیامک و زنگ آلارم )

اونور که سوال پرسیدیم کسی جواب نمیده متاسفانه !
http://barnamenevis.org/showthread.php?450407


شما که جواب گرفتی چرا این رو تو یک بخش دیگه گذاشتی ؟ :متعجب:

moralschool
جمعه 19 اردیبهشت 1393, 08:05 صبح
شما که جواب گرفتی چرا این رو تو یک بخش دیگه گذاشتی ؟ :متعجب:

ممنون از اینکه جواب دادید
بله البته قسمتی از جواب رو گرفتم ولی دوست داشتم یه نمونه کامتر برای رفع مشکلات ببینم
باور کنید تا حالا چند برنامه رینگتون موبایل رو از بازار دانلود کردم و تست کردم ، همشون همین مشکل رو دارند که من به عنوان یه سوال مطرح کردم و اونم اینه که :
چطور میتونم همین آهنگ رو بعنوان زنگ پیامک ها و آلارم قرار بدم؟
یعنی وقتی مثلا برام پیامک میاد اون آهنگ پخش بشه ( نه اینکه وقتی مثلا بلوتوث دریافت میشه در نوتیفیکیشن ، اون وقت فقط صدا پخش بشه ! )
یا اگه یه ساعت رو برای مثلا بیداری انتخاب میکنم ، وقتی که به اون زمان میرسه ، صدای آهنگ مورد نظر پخش بشه

من کدهاش رو استفاده میکنم ولی همونطور که در بالا هم نوشتم ، درست عمل نمیکنه !
در سایت های خارجی هم زیاد سرچ کردم ولی نتیجه نگرفتم

دومین مشکل هم اینه که :
برنامه ای که من دارم روش کار میکنم سه تا دکمه داره که یکیش برای تعیین بعنوان زنگ موبایل ، یکی برای زنگ پیامک و یکی برای آلارم هست
حالا وقتی هر کدوم رو انتخاب میکنم می بینم که زنگ دوتای دیگه بر میگرده به زنگ پیشفرض گوشی !
در صورتی که باید اگه هر سه دکمه انتخاب بشن ، هر سه تا در قسمت تنظیمات اعمال بشه ولی الان اینجوری نیست و با انتخاب هر دکمه زنگ مورد نظر اعمال میشه ولی زنگ دوتای دیگه به پیشفرض بر میگرده
دوستان برنامه نویس لطفا جواب بدید :افسرده:

moralschool
جمعه 19 اردیبهشت 1393, 12:13 عصر
اساتید نمیخوان کمک کنن ؟