Skip to content

Commit

Permalink
Merge pull request #596 from jjoseba/issue-539
Browse files Browse the repository at this point in the history
Issue 539
  • Loading branch information
alexlittle committed Jan 5, 2017
2 parents 291d7b3 + 55a0535 commit eeff857
Show file tree
Hide file tree
Showing 8 changed files with 71 additions and 60 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ public class Tracker {

public static final String TAG = Tracker.class.getSimpleName();
public static final String SEARCH_TYPE = "search";
public static final String MISSING_MEDIA_TYPE = "missing_media";

private final Context ctx;

Expand Down Expand Up @@ -67,7 +68,19 @@ public void saveSearchTracker(String searchTerm, int count){
} catch (JSONException e) {
e.printStackTrace();
}

}

public void saveMissingMediaTracker(String filename){

try {
JSONObject missingMedia = new JSONObject();
missingMedia = new MetaDataUtils(ctx).getMetaData(missingMedia);
missingMedia.put("filename", filename);
saveTracker(0, "", missingMedia, MISSING_MEDIA_TYPE, true);

} catch (JSONException e) {
e.printStackTrace();
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ public static String getMimeType(String url) {
return type;
}

public static boolean supportedMediafileType(String mimeType) {
public static boolean isSupportedMediafileType(String mimeType) {
Log.d(TAG, mimeType);
if (mimeType == null) {
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
import android.os.StatFs;
import android.util.Log;

import org.digitalcampus.mobile.learning.R;
import org.digitalcampus.oppia.application.MobileLearning;
import org.digitalcampus.oppia.application.Tracker;

import java.io.File;
import java.io.FileNotFoundException;
Expand Down Expand Up @@ -82,6 +84,12 @@ public static boolean createFolderStructure(Context ctx) {
public static boolean mediaFileExists(Context ctx, String filename) {
File media = new File(Storage.getMediaPath(ctx) + filename);
Log.d(TAG, "Looking for: " + Storage.getMediaPath(ctx) + filename);

if (!media.exists()){
//Save the missing media tracker
new Tracker(ctx).saveMissingMediaTracker(filename);
}

return media.exists();
}

Expand Down
33 changes: 3 additions & 30 deletions app/src/main/java/org/digitalcampus/oppia/widgets/PageWidget.java
Original file line number Diff line number Diff line change
Expand Up @@ -144,33 +144,8 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
int startPos = url.indexOf("/video/") + 7;
String mediaFileName = url.substring(startPos, url.length());

// check video file exists
boolean exists = Storage.mediaFileExists(PageWidget.super.getActivity(), mediaFileName);
if (!exists) {
Log.d(TAG,PageWidget.super.getActivity().getString(R.string.error_media_not_found, mediaFileName));
Toast.makeText(PageWidget.super.getActivity(), PageWidget.super.getActivity().getString(R.string.error_media_not_found, mediaFileName),
Toast.LENGTH_LONG).show();
return true;
} else {
Log.d(TAG,"Media found: " + mediaFileName);
}

String mimeType = FileUtils.getMimeType(Storage.getMediaPath(PageWidget.super.getActivity()) + mediaFileName);

if (!FileUtils.supportedMediafileType(mimeType)) {
Toast.makeText(PageWidget.super.getActivity(), PageWidget.super.getActivity().getString(R.string.error_media_unsupported, mediaFileName),
Toast.LENGTH_LONG).show();
return true;
}

Intent intent = new Intent(PageWidget.super.getActivity(), VideoPlayerActivity.class);
Bundle tb = new Bundle();
tb.putSerializable(VideoPlayerActivity.MEDIA_TAG, mediaFileName);
tb.putSerializable(Activity.TAG, activity);
tb.putSerializable(Course.TAG, course);
intent.putExtras(tb);
startActivity(intent);
return true;
PageWidget.super.startMediaPlayerWithFile(mediaFileName);
return true;

} else {

Expand Down Expand Up @@ -267,9 +242,7 @@ public HashMap<String, Object> getWidgetConfig() {
}

public String getContentToRead() {
File f = new File(File.separator
+ course.getLocation()
+ File.separator
File f = new File(File.separator + course.getLocation() + File.separator
+ activity.getLocation(prefs.getString(PrefsActivity.PREF_LANGUAGE, Locale.getDefault()
.getLanguage())));
StringBuilder text = new StringBuilder();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -661,27 +661,7 @@ public OnMediaClickListener(String mediaFileName){
}

public void onClick(View v) {
// check video file exists
boolean exists = Storage.mediaFileExists(QuizWidget.super.getActivity(), mediaFileName);
if (!exists) {
Toast.makeText(QuizWidget.super.getActivity(), QuizWidget.super.getActivity().getString(R.string.error_media_not_found, mediaFileName), Toast.LENGTH_LONG).show();
return;
}

String mimeType = FileUtils.getMimeType(Storage.getMediaPath(QuizWidget.super.getActivity()) + mediaFileName);
if (!FileUtils.supportedMediafileType(mimeType)) {
Toast.makeText(QuizWidget.super.getActivity(), QuizWidget.super.getActivity().getString(R.string.error_media_unsupported, mediaFileName),
Toast.LENGTH_LONG).show();
return;
}

Intent intent = new Intent(QuizWidget.super.getActivity(), VideoPlayerActivity.class);
Bundle tb = new Bundle();
tb.putSerializable(VideoPlayerActivity.MEDIA_TAG, mediaFileName);
tb.putSerializable(Activity.TAG, activity);
tb.putSerializable(Course.TAG, course);
intent.putExtras(tb);
startActivity(intent);
QuizWidget.super.startMediaPlayerWithFile(mediaFileName);
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import org.digitalcampus.oppia.model.Course;
import org.digitalcampus.oppia.utils.MetaDataUtils;
import org.digitalcampus.oppia.utils.resources.ExternalResourceOpener;
import org.digitalcampus.oppia.utils.storage.Storage;
import org.json.JSONException;
import org.json.JSONObject;

Expand All @@ -48,6 +49,7 @@
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
Expand Down Expand Up @@ -321,7 +323,8 @@ public OnResourceClickListener(Context ctx, String type){
public void onClick(View v) {
File file = (File) v.getTag();
// check the file is on the file system (should be but just in case)
if(!file.exists()){
boolean exists = Storage.mediaFileExists(_ctx, file.getName());
if(!exists){
Toast.makeText(_ctx, _ctx.getString(R.string.error_resource_not_found,file.getName()), Toast.LENGTH_LONG).show();
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,18 @@

import java.util.HashMap;

import org.digitalcampus.mobile.learning.R;
import org.digitalcampus.oppia.model.Activity;
import org.digitalcampus.oppia.model.Course;
import org.digitalcampus.oppia.utils.mediaplayer.VideoPlayerActivity;
import org.digitalcampus.oppia.utils.storage.FileUtils;
import org.digitalcampus.oppia.utils.storage.Storage;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.widget.Toast;

public abstract class WidgetFactory extends Fragment {

Expand All @@ -46,7 +53,7 @@ public abstract class WidgetFactory extends Fragment {
public abstract void setWidgetConfig(HashMap<String,Object> config);

public void setReadAloud(boolean readAloud){
this.readAloud = true;
this.readAloud = readAloud;
}

protected String getDigest() {
Expand Down Expand Up @@ -96,4 +103,31 @@ public long getSpentTime(){
}
return this.spentTime;
}

protected void startMediaPlayerWithFile(String mediaFileName){
// check media file exists
boolean exists = Storage.mediaFileExists(getActivity(), mediaFileName);
if (!exists) {
Toast.makeText(getActivity(),
getActivity().getString(R.string.error_media_not_found, mediaFileName),
Toast.LENGTH_LONG).show();
return;
}

String mimeType = FileUtils.getMimeType(Storage.getMediaPath(getActivity()) + mediaFileName);
if (!FileUtils.isSupportedMediafileType(mimeType)) {
Toast.makeText(getActivity(),
getActivity().getString(R.string.error_media_unsupported, mediaFileName),
Toast.LENGTH_LONG).show();
return;
}

Intent intent = new Intent(getActivity(), VideoPlayerActivity.class);
Bundle tb = new Bundle();
tb.putSerializable(VideoPlayerActivity.MEDIA_TAG, mediaFileName);
tb.putSerializable(Activity.TAG, activity);
tb.putSerializable(Course.TAG, course);
intent.putExtras(tb);
getActivity().startActivity(intent);
}
}
10 changes: 5 additions & 5 deletions app/src/test/java/UnitTests/FileUtilsTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -259,15 +259,15 @@ public void ReadFile_String(){

/* @Test
public void FileUtils_supportedMediafileType(){
assertFalse(FileUtils.supportedMediafileType(null));
assertFalse(FileUtils.isSupportedMediafileType(null));
assertTrue(FileUtils.supportedMediafileType("video/m4v"));
assertTrue(FileUtils.isSupportedMediafileType("video/m4v"));
assertTrue(FileUtils.supportedMediafileType("video/mp4"));
assertTrue(FileUtils.isSupportedMediafileType("video/mp4"));
assertTrue(FileUtils.supportedMediafileType("audio/mpeg"));
assertTrue(FileUtils.isSupportedMediafileType("audio/mpeg"));
assertFalse(FileUtils.supportedMediafileType("application/json"));
assertFalse(FileUtils.isSupportedMediafileType("application/json"));
}
*/
Expand Down

0 comments on commit eeff857

Please sign in to comment.