【问题标题】:Show last created audio file in Android在 Android 中显示最后创建的音频文件
【发布时间】:2016-12-28 12:44:37
【问题描述】:

我正在使用以下代码来查找上次创建的文件。

public class MainActivity extends AppCompatActivity {

Button button;
TextView textView;
ArrayList<File> fileArrayList;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    fileArrayList = new ArrayList<>();

    textView = (TextView) findViewById(R.id.tv);
    final String dir = String.valueOf(Environment.getExternalStorageDirectory());
    Log.d("Directory Path",dir);

    fileArrayList = listf(dir,fileArrayList);

    button = (Button) findViewById(R.id.btn);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            File lastModified = lastFileModified(fileArrayList);
            textView.setText(lastModified.getPath());
        }
    });




}

public static File lastFileModified(ArrayList<File> fileArrayList) {

    long lastMod = Long.MIN_VALUE;
    File choice = null;
    for (File file : fileArrayList) {


        if (file.lastModified() > lastMod) {
            choice = file;
            lastMod = file.lastModified();
        }
    }
    return choice;
}

public ArrayList<File> listf(String directoryName, ArrayList<File> files) {
    File directory = new File(directoryName);

    // get all the files from a directory
    File[] fList = directory.listFiles();
    for (File file : fList) {
        if (file.isFile()) {
            files.add(file);
        } else if (file.isDirectory()) {
            listf(file.getAbsolutePath(), files);
        }
    }

    return files;
}

}

上面的代码给了我一些随机的最后创建的文件。但我想要最后创建的音频文件。此外,创建的音频文件应该是来自内部存储或外部存储的最新文件。请帮忙。 谢谢。

【问题讨论】:

    标签: android last-modified


    【解决方案1】:

    我看了你的代码。请进行以下更改,它对我有用。

    public class MainActivity extends AppCompatActivity {
    
    
    File lastModifiedFile;
    TextView tv;
    ArrayList<File> files;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.tv);
    
        files = new ArrayList<>();
    
        String d = String.valueOf(Environment.getExternalStorageDirectory());
        files = listf(d, files);
    
        File finalmodified = checkLastmod(files);
        tv.setText(finalmodified.getAbsolutePath());
    }
    
    private ArrayList<File> listf(String d, ArrayList<File> files) {
        File directory = new File(d);
    
        // get all the files from a directory
        File[] fList = directory.listFiles(new AudioFilter());
        for (File file : fList) {
            if (file.isFile()) {
                files.add(file);
            } else if (file.isDirectory()) {
                listf(file.getAbsolutePath(), files);
            }
        }
        return files;
    }
    
    private File checkLastmod(ArrayList<File> audiofiles) {
        long latmod = Long.MIN_VALUE;
        lastModifiedFile = null;
        for(File file: audiofiles)
        {
            if(file.lastModified() > latmod){
                lastModifiedFile = file;
                latmod = file.lastModified();
            }
        }
        return lastModifiedFile;
    }
    
    
    public class AudioFilter implements FileFilter {
    
        // only want to see the following audio file types
        private String[] extension = {".aac", ".mp3", ".wav", ".ogg", ".midi", ".3gp", ".mp4", ".m4a", ".amr", ".flac"};
    
        @Override
        public boolean accept(File pathname) {
    
            // if we are looking at a directory/file that's not hidden we want to see it so return TRUE
            if (pathname.isDirectory() && !pathname.isHidden()) {
                return true;
            }
    
            // loops through and determines the extension of all files in the directory
            // returns TRUE to only show the audio files defined in the String[] extension array
            for (String ext : extension) {
                if (pathname.getName().toLowerCase().endsWith(ext)) {
                    return true;
                }
            }
    
            return false;
        }
    }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-12
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多