بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
تغییر رینگتون از فایل های داخل پوشه asset
مدیریت گفتگو
آخرین تغییر: 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;
}
پاسخها 5
این کد ست کردن رینگتون هست فقط نمی دونم بین این دو پرانتز چی بنویسم هرچی وارد می کنم خطا می گیره
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
);
نظرات
از این متد استفاده کن خبرشو بده
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());
}
}
نظرات
محسن جان داخل اون پرانتز یه مسیر فایل و اسم فایل رو می خواد
توی کد اولی که گذاشتم موقعیت ولیست فایل ها رو دارم الان باید چی رو بزارم اونجا ای خدا دیوونه شدم
مگه نمیخای از پوشه assets فایل لود کنی؟
به جای:
android.resource://globalapps.funnyringtones/raw/sound_two.mp3
از این استفاده کن:
file://android_asset/ringtone.mp3
نظرات
اینو حل کردم می خوام آهنگ رو به عنوان زنگ گوشی انتخاب کنم .
سوال بالا رو یه بار بخون محسن جان متوجه میشی
سلام .
من تو پروژه خودم آهنگهام رو توی 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");
}
}
نظرات
ایول یه خط کدتون خیلی به دردم خورد محسن جان خیلی ممنون بلاخره تکمیلش کردم خیلی لذت بخش بود حال کردم
دوستان بلاخره تمومش کردم ممنون از همه دوستایی که کمکم کردند انشالله آموزشش رو توی سایت می زارم
نظرات
کی میزاری>
منظورم اینه که چه موقع آموزشش رو توی سایت میزاری
نمی دنم دوست عزیز فعلا درگیر این پروژه هستم هروقت تونستم میزارم
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات