2016-12-28 51 views
0

我正在使用以下代码来查找上次创建的文件。在Android中显示上次创建的音频文件

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; 
} 

}

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

回答

0

我看了一下你的代码。请做以下更改,它适用于我。

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; 
    } 
}}