بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
شناسایی درست پوشه منابع
سلام
دوستان در یک پروژه نیاز دارم آهنگ هایی که در پوشه (مثلا sound) هست رو پیدا کنم و در یک لیست ویو نشون بدم...فقط الان مشکل اینه که هر ادرسی میدم برای دسترسی به پوشه sound نمیتونه پیداش کنه.این پوشه رو من در زیر پوشه res ایجاد کردم و به شکل زیر بهش دسترسی میدم که نمیشناسه :
private static final String SD_PATH = new String ("data/data/ir.rojaco.xxx.xxxx/sound/");
سپاس

+1
0
باید توی پوشه assets بزاری فولدرت رو نمیتونی توی فولدر res قرار بدی. (10 سال پیش)
0
0
مسیر دسترسیش چی میشه اونوقت؟!
(10 سال پیش)
0
0
برای استفاده از فایل هایی که درون assets قرار میگیرن برای دسترسی علاوه بر دادن آدرس باید اونا رو تبدیل به فرمت مورد نظر بکنی چون خروجی گرفته شده از assets فولدر به صورت استریم هست که کد و پردازش زیادی میبره. (10 سال پیش)
+1
0
بهترین کار اینکه شما یک فولدر به اسم raw درون فولدر res درست کنی و فقط فایل های mp3 رو درون اون بریزین بدون درست زیر فولدر. (10 سال پیش)
0
0
خو منم همینکارو کردم...دقیقا...فقط اسم پوشه بجای raw ، sound و در زیر پوشه res قر ار داره...عکس پروژه رو هم قرار دادم...مشکل عدم شناسایی فایل هاست... هیچی نمیاره! (10 سال پیش)
0
0
شما نمیتونید جز فولدرهای پیش فرض در فولدر res فولدر دیگه ای بسازید، شما اگه فایلی دارید که میخواهید از طریق کلاس R به اونا دسترسی داشته باشد باید حتما درون فولدر raw باشد.
اینم رو در نظر بگیرید که دیگه نباید فولدر دیگه ای درون فولدر raw بسازید، مستقیم فایل هاتون رو اونجا کپی کنید. (10 سال پیش)
0
0
قطعه کد دسترسیش چی میشه خب دوست عزیز؟! منم بخدا همین کارو کردم...اما هر کدی میزنم فایل هارو نمیشناسه؟!
(10 سال پیش)
+1
0
اگه قصدتون play کردن یک فایل صوتی هست : لینک (10 سال پیش)
0
0
مرسی و ممنون از راهنمایی اما کلن سوال و سورسی که گذاشتم رو مطالعه کردین؟! صد درصد نیت و قصد play کردن هست اما قبلش باید بشناسه فایل رو! بریزه تو لیست ویو بعدش انشالله play هم میشه! (10 سال پیش)
برای این سوال 5 پاسخ وجود دارد.
پاسخ به سوال
RojaDev
10 سال پیش
0
0
class Mp3Filter implements FilenameFilter{
public boolean accept(File dir, String name){
return (name.endsWith(".mp3"));
}
}
public class ringtone extends ListActivity {
private static final String SD_PATH = new String ("data/data/ir.rojaco.xxxx.xxxx/sound/");
private List<String> songs = new ArrayList<String>();
private MediaPlayer mp = new MediaPlayer();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layout.ringtone);
updatePlayList();
ImageButton stopPlay = (ImageButton) findViewById(id.stopbtn);
stopPlay.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
mp.stop();
}
});
}
@Override
protected void onListItemClick(ListView list, View view, int position, long id)
{
try{
mp.reset();
mp.setDataSource(SD_PATH + songs.get(position));
mp.prepare();
mp.start();
} catch (IOException e){
Log.v(getString(string.app_name), e.getMessage());
}
}
private void updatePlayList() {
File home = new File(SD_PATH);
if(home.listFiles(new Mp3Filter()).length>0){
for(File file: home.listFiles(new Mp3Filter())){
songs.add(file.getName());
}
ArrayAdapter<String> songList = new ArrayAdapter<String>(this, layout.song_item, songs);
setListAdapter(songList);
}
}
قطعه کد ، اما کار نمیکنه!
پاسخ به سوال
پیام
10 سال پیش
+1
0
برای گرفتن نام فایل ها درون فولدر Raw
public List<String> getNameOfAllFileInRawFolder(){
Field[] fields=R.raw.class.getFields();
List<String> fileNames = new ArrayList<>();
for(int count=0; count < fields.length; count++) {
Log.i("Raw Asset: ", fields[count].getName());
fileNames.add(fields[count].getName());
}
return fileNames;
}
}
پاسخ به سوال
RojaDev
10 سال پیش
0
0
class Mp3Filter implements FilenameFilter{
public boolean accept(File dir, String name){
return (name.endsWith(".mp3"));
}
}
public class ringtone extends ListActivity {
public static final String SD_PATH = new String ("data/data/ir.rojaco.xxx.xxx/raw");
private List<String> fileNames = new ArrayList<String>();
java.lang.reflect.Field[] fields=R.raw.class.getFields();
// private List<String> songs = new ArrayList<String>();
private MediaPlayer mp = new MediaPlayer();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layout.ringtone);
// updatePlayList();
getNameOfAllFileInRawFolder();
ImageButton stopPlay = (ImageButton) findViewById(id.stopbtn);
stopPlay.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
mp.stop();
}
});
}
@Override
protected void onListItemClick(ListView list, View view, int position, long id)
{
try{
mp.reset();
mp.setDataSource(fields + fileNames.get(position));
mp.prepare();
mp.start();
} catch (IOException e){
Log.v(getString(string.app_name), e.getMessage());
}
}
/*
private void updatePlayList() {
File home = new File(SD_PATH);
if(home.listFiles(new Mp3Filter()).length>0){
for(File file: home.listFiles(new Mp3Filter())){
fileNames.add(file.getName());
}
ArrayAdapter<String> songList = new ArrayAdapter<String>(this, layout.song_item, fileNames);
setListAdapter(songList);
}
}
*/
public void getNameOfAllFileInRawFolder(){
for(int count=0; count < fields.length; count++) {
Log.i("Raw Asset: ", fields[count].getName());
fileNames.add(fields[count].getName());
}
ArrayAdapter<String> songList = new ArrayAdapter<String>(this, layout.song_item, fileNames);
setListAdapter(songList);
}
}

پاسخ به سوال
پیام
10 سال پیش
0
0
من تست کردم اوکی بود
public class MyListActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_activity);
getNameOfAllFileInRawFolder();
}
public void getNameOfAllFileInRawFolder(){
List<String> fileNames = new ArrayList<String>();
java.lang.reflect.Field[] fields=R.raw.class.getFields();
for(int count=0; count < fields.length; count++) {
Log.i("Raw Asset: ", fields[count].getName());
fileNames.add(fields[count].getName());
}
ArrayAdapter<String> songList =
new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, fileNames);
setListAdapter(songList);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@android:id/list"
android:background="#aaaaaa" />
</LinearLayout>
پاسخ به سوال
RojaDev
10 سال پیش
0
0
الان ترک های داخل پوشه raw رو نشون میده اما وقتی کد کلیک روی لیست ویو رو اجرا میکنه برنامه فورس کلوز میده :

کد مربوط به کلیک روی لیست ویو :
protected void onListItemClick(ListView list, View view, int position, long id)
{
try{
mp.reset();
mp.setDataSource(SD_PATH + songs.get(position));
mp.prepare();
mp.start();
} catch (IOException e){
Log.v(getString(R.string.app_name), e.getMessage());
}
}
خطا هم روی دستور :
mp.setDataSource(SD_PATH + songs.get(position));
دوباره دسترسی raw میخواد!
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .