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

پاسخها 5
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);
}
}
قطعه کد ، اما کار نمیکنه!
نظرات
برای گرفتن نام فایل ها درون فولدر 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;
}
}
نظرات
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);
}
}

نظرات
من تست کردم اوکی بود
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>
نظرات
دقیقا همین کد ها رو میزارم...لیست ویو خالیه...رسما موندم دیگه؟!
راه دیگه برای ایجاد لیستی از آهنگ ها و پخششون نیست؟!
الان ترک های داخل پوشه 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 میخواد!
نظرات
عزیز من اینو من هم تست کردم مشکل شما رو داشتم اما متوجه شدم باید در مانیفست مجوز دسترسی خواندن و نوشتن رو وارد کنید مبینید که اوکی میشه به امید پیروزی اسلام بر کفر
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات