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

تغییر رینگتون از فایل های داخل پوشه asset

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

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

اینم کد؟

  Intent i = getIntent();
Bundle b = i.getExtras();
myList = (ArrayList) b.getParcelableArrayList("songList");
position = b.getInt("pos");
btPlaye.setOnClickListener(this);
btStop.setOnClickListener(this);
btRing.setOnClickListener(this);

}


@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.btPlay:
Uri u = Uri.parse(myList.get(position).toString());
mp = new MediaPlayer();
AssetFileDescriptor afd;
try {
afd = getAssets().openFd(u.toString());
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mp.prepare();
mp.start();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//MediaPlayer player = new MediaPlayer();
break;
case R.id.btStop:
mp.stop();
mp.release();
break;
case R.id.seRing:
اینجا چی بنویسم!
break;
}

نظرات

Shadow 11 سال پیش
چرا کسی کمک نمی کنه مشکل چیه من چندتا سوال گذاشتم کسی اصلا جواب نمی ده خواهشا اگه بلدید دریغ نکنید .
Shadow 11 سال پیش
خواهشا کمک کنید
Shadow 11 سال پیش
جواب بدید لطفا
محسن علیزاده 11 سال پیش
ببخشید شرلاک عزیز، سایت پُر شده از سوالات تو، یک پروژه کامل رو سوال کردی تقریبا. به نظرم یک سورس آماده پیدا کن و اگر نیست سفارش بده با یه قیمت مناسب بخر. به نظر من خیلی دستت جلوتره اینجوری...
Shadow 11 سال پیش
محسن جان من سوال زیاد کردم ولی خودمم به جواب رسیدم کسی که جواب نمیده خداوکیلی شد دوهفته من دارم روی این پروژه کار می کنم دیگه آخراشه ولی واقعا کسی جواب سوالات منو نداده چندتا راهنمایی بوده ولی به درد من نخورده ببخشید سوال زیاد می پرسم چون این پروژه ام باید تا آخر ماه منتشر بشه واسه همینه که ... حالا ممنون میشم جواب بدید بازم عذر می خوام از شما

پاسخ‌ها 5

Shadow 11 سال پیش

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

 File k = new File();
 case R.id.seRing:

File k = new File(u, afd);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "My Song title");
values.put(MediaStore.MediaColumns.SIZE, 215454);
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, "Madonna");
values.put(MediaStore.Audio.Media.DURATION, 230);
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 uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
Uri newUri = this.getContentResolver().insert(uri, values);

RingtoneManager.setActualDefaultRingtoneUri(
Player.this,
RingtoneManager.TYPE_RINGTONE,
newUri
);

نظرات

محسن علیزاده 11 سال پیش

از این متد استفاده کن خبرشو بده

 

public void setRingtone() {
String ringtoneuri = Environment.getExternalStorageDirectory().getAbsolutePath() + "/media/ringtone";
File file1 = new File(ringtoneuri);
file1.mkdirs();
File newSoundFile = new File(ringtoneuri, "myringtone.mp3");


Uri mUri = Uri.parse("android.resource://globalapps.funnyringtones/raw/sound_two.mp3");


ContentResolver mCr = this.getContentResolver();
AssetFileDescriptor soundFile;
try {
soundFile = mCr.openAssetFileDescriptor(mUri, "r");
} catch (FileNotFoundException e) {
soundFile = null;
}

try {
byte[] readData = new byte[1024];
FileInputStream fis = soundFile.createInputStream();
FileOutputStream fos = new FileOutputStream(newSoundFile);
int i = fis.read(readData);

while (i != -1) {
fos.write(readData, 0, i);
i = fis.read(readData);
}

fos.close();
} catch (IOException io) {
}

ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, newSoundFile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "my ringtone");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.MediaColumns.SIZE, newSoundFile.length());
values.put(MediaStore.Audio.Media.ARTIST, R.string.app_name);
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);

Uri uri = MediaStore.Audio.Media.getContentUriForPath(newSoundFile.getAbsolutePath());
Uri newUri = mCr.insert(uri, values);
try {
Uri rUri = RingtoneManager.getValidRingtoneUri(this);
if (rUri != null)
ringtoneManager.setStopPreviousRingtone(true);
RingtoneManager.setActualDefaultRingtoneUri(getApplicationContext(), RingtoneManager.TYPE_RINGTONE, newUri);
Toast.makeText(this, "New Rigntone set", Toast.LENGTH_SHORT).show();
} catch (Throwable t) {
Log.e("sanjay in catch", "catch exception"+e.getMessage());
}

}

 

نظرات

Shadow 11 سال پیش
محسن جان داخل اون پرانتز یه مسیر فایل و اسم فایل رو می خواد
Shadow 11 سال پیش
توی کد اولی که گذاشتم موقعیت ولیست فایل ها رو دارم الان باید چی رو بزارم اونجا ای خدا دیوونه شدم
محسن علیزاده 11 سال پیش

مگه نمیخای از پوشه assets فایل لود کنی؟

به جای:

 android.resource://globalapps.funnyringtones/raw/sound_two.mp3

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

 file://android_asset/ringtone.mp3

 

نظرات

Shadow 11 سال پیش
اینو حل کردم می خوام آهنگ رو به عنوان زنگ گوشی انتخاب کنم . سوال بالا رو یه بار بخون محسن جان متوجه میشی
mohsen-jj 11 سال پیش

سلام .

من تو پروژه خودم آهنگهام رو توی assets ریختم و با این کد تنظیمش کردم :

در ضمن ، این کدها توی کلاس G من بودن به همین خاطر متود استاتیک هست .و همچنین کلاس HelperIo برای کپی کردن فایل هست چون اول باید آهنگ داخل گوشی کاربر ذخیره بشه . کد این کلاس توی فصل 19 آموزش های استاد هست اگه ندارید بگید تا براتون بذارم .

موفق باشید .

 final static String DIR_SDCARD = Environment.getExternalStorageDirectory()
.getAbsolutePath();

final static String DIR_RINGTONES = DIR_SDCARD + "/Ringtones/";

public static void setRingtone(String musicName){

musicName=musicName+".mp3";

new File(DIR_RINGTONES)
.mkdirs();



File file = new File(
DIR_RINGTONES+musicName);
if (!file.exists()) {

AssetManager assetmanager = G.context.getAssets();
InputStream inputstream;
try {
inputstream = assetmanager.open(musicName);
HelperIO.copyFile(inputstream,
DIR_RINGTONES+musicName);
} catch (Exception e) { // TODO: handle exception }

}
}



ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, file.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, musicName);
values.put(MediaStore.MediaColumns.SIZE,file.length());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.ARTIST, R.string.app_name);
values.put(MediaStore.Audio.Media.DURATION, 230);
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);


try {
Uri uri = MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath());
context.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + file.getAbsolutePath() + "\"", null);
Uri newUri = context.getContentResolver().insert(uri, values);

RingtoneManager.setActualDefaultRingtoneUri(G.context,
RingtoneManager.TYPE_RINGTONE, newUri);
G.customToster("ringtone change successfully");
} catch (Exception e) {
// TODO: handle exception
G.toster("error");
}



}

نظرات

Shadow 11 سال پیش
ایول یه خط کدتون خیلی به دردم خورد محسن جان خیلی ممنون بلاخره تکمیلش کردم خیلی لذت بخش بود حال کردم
Shadow 11 سال پیش

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

نظرات

Hossein Lamei Ramandi 11 سال پیش
منظورم اینه که چه موقع آموزشش رو توی سایت میزاری
Shadow 11 سال پیش
نمی دنم دوست عزیز فعلا درگیر این پروژه هستم هروقت تونستم میزارم

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