Skip to content

Commit eba0328

Browse files
committed
Update sample app + refactoring
1 parent b477b9c commit eba0328

8 files changed

Lines changed: 65 additions & 48 deletions

File tree

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55
> Convert audio files inside your Android app easily. This is a wrapper of [FFmpeg-Android-Java](https://github.com/WritingMinds/ffmpeg-android-java) lib.
66
77
Supported formats:
8-
* WAV
98
* AAC
109
* MP3
1110
* M4A
1211
* WMA
12+
* WAV
1313
* FLAC
1414

15+
Lib size: ~9mb
16+
1517
## How To Use
1618

1719
1 - Add these permissions into your `AndroidManifest.xml` and [request for them in Android 6.0+](https://developer.android.com/training/permissions/requesting.html)

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ android {
1919
}
2020

2121
dependencies {
22-
compile 'com.android.support:appcompat-v7:24.2.0'
22+
compile 'com.android.support:appcompat-v7:24.2.1'
2323
compile project(':lib')
2424
}

app/src/main/java/cafe/adriel/androidaudioconverter/sample/MainActivity.java

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package cafe.adriel.androidaudioconverter.sample;
22

3+
import android.Manifest;
4+
import android.graphics.drawable.ColorDrawable;
35
import android.os.Bundle;
46
import android.os.Environment;
5-
import android.os.Handler;
67
import android.support.v7.app.AppCompatActivity;
7-
import android.util.Log;
8+
import android.view.View;
9+
import android.widget.Toast;
810

911
import java.io.File;
1012

@@ -18,16 +20,16 @@ protected void onCreate(Bundle savedInstanceState) {
1820
super.onCreate(savedInstanceState);
1921
setContentView(R.layout.activity_main);
2022

21-
// Giving time to lib load
22-
new Handler().postDelayed(new Runnable() {
23-
@Override
24-
public void run() {
25-
convertAudio();
26-
}
27-
}, 2000);
23+
if (getSupportActionBar() != null) {
24+
getSupportActionBar().setBackgroundDrawable(
25+
new ColorDrawable(getResources().getColor(R.color.colorPrimaryDark)));
26+
}
27+
28+
Util.requestPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
29+
Util.requestPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
2830
}
2931

30-
private void convertAudio(){
32+
public void convertAudio(View v){
3133
/**
3234
* Update with a valid audio file!
3335
* Supported formats: {@link AndroidAudioConverter.AudioFormat}
@@ -36,13 +38,14 @@ private void convertAudio(){
3638
IConvertCallback callback = new IConvertCallback() {
3739
@Override
3840
public void onSuccess(File convertedFile) {
39-
Log.d("SUCCESS", convertedFile.getPath());
41+
Toast.makeText(MainActivity.this, "SUCCESS: " + convertedFile.getPath(), Toast.LENGTH_LONG).show();
4042
}
4143
@Override
4244
public void onFailure(Exception error) {
43-
error.printStackTrace();
45+
Toast.makeText(MainActivity.this, "ERROR: " + error.getMessage(), Toast.LENGTH_LONG).show();
4446
}
4547
};
48+
Toast.makeText(this, "Converting audio file...", Toast.LENGTH_SHORT).show();
4649
AndroidAudioConverter.with(this)
4750
.setFile(wavFile)
4851
.setFormat(AndroidAudioConverter.AudioFormat.MP3)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package cafe.adriel.androidaudioconverter.sample;
2+
3+
import android.app.Activity;
4+
import android.content.pm.PackageManager;
5+
import android.support.v4.app.ActivityCompat;
6+
import android.support.v4.content.ContextCompat;
7+
8+
public class Util {
9+
10+
public static void requestPermission(Activity activity, String permission) {
11+
if (ContextCompat.checkSelfPermission(activity, permission)
12+
!= PackageManager.PERMISSION_GRANTED) {
13+
ActivityCompat.requestPermissions(activity, new String[]{permission}, 0);
14+
}
15+
}
16+
17+
}
Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2+
<RelativeLayout
3+
xmlns:android="http://schemas.android.com/apk/res/android"
34
xmlns:tools="http://schemas.android.com/tools"
4-
android:id="@+id/activity_main"
55
android:layout_width="match_parent"
66
android:layout_height="match_parent"
7-
android:paddingBottom="@dimen/activity_vertical_margin"
8-
android:paddingLeft="@dimen/activity_horizontal_margin"
9-
android:paddingRight="@dimen/activity_horizontal_margin"
10-
android:paddingTop="@dimen/activity_vertical_margin"
7+
android:background="@color/colorPrimary"
118
tools:context="cafe.adriel.androidaudioconverter.sample.MainActivity">
129

10+
<Button
11+
android:layout_width="wrap_content"
12+
android:layout_height="wrap_content"
13+
android:layout_centerInParent="true"
14+
android:padding="20dp"
15+
android:text="CONVERT AUDIO"
16+
android:textAppearance="@style/TextAppearance.AppCompat.Large"
17+
android:textColor="@android:color/white"
18+
android:onClick="convertAudio"
19+
style="@style/Widget.AppCompat.Button.Borderless"/>
20+
1321
</RelativeLayout>

app/src/main/res/values-w820dp/dimens.xml

Lines changed: 0 additions & 6 deletions
This file was deleted.

app/src/main/res/values/dimens.xml

Lines changed: 0 additions & 5 deletions
This file was deleted.

lib/src/main/java/cafe/adriel/androidaudioconverter/AndroidAudioConverter.java

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,53 +15,52 @@
1515
public class AndroidAudioConverter {
1616

1717
public enum AudioFormat {
18-
WAV,
1918
AAC,
2019
MP3,
2120
M4A,
2221
WMA,
22+
WAV,
2323
FLAC;
2424

2525
@Override
2626
public String toString() {
27-
return super.toString().toLowerCase();
27+
return name().toLowerCase();
2828
}
2929
}
3030

31+
private static boolean loaded;
32+
3133
private Context context;
3234
private File audioFile;
3335
private AudioFormat format;
3436
private IConvertCallback callback;
3537

36-
private static boolean load;
37-
3838
private AndroidAudioConverter(Context context){
3939
this.context = context;
4040
}
4141

42-
public static boolean isLoad(){
43-
return load;
42+
public static boolean isLoaded(){
43+
return loaded;
4444
}
4545

4646
public static void load(Context context, final ILoadCallback callback){
4747
try {
48-
FFmpeg.getInstance(context)
49-
.loadBinary(new FFmpegLoadBinaryResponseHandler() {
48+
FFmpeg.getInstance(context).loadBinary(new FFmpegLoadBinaryResponseHandler() {
5049
@Override
5150
public void onStart() {
5251

5352
}
5453

5554
@Override
5655
public void onSuccess() {
57-
load = true;
56+
loaded = true;
5857
callback.onSuccess();
5958
}
6059

6160
@Override
6261
public void onFailure() {
63-
load = false;
64-
callback.onFailure(new Exception("Failed to load FFmpeg lib"));
62+
loaded = false;
63+
callback.onFailure(new Exception("Failed to loaded FFmpeg lib"));
6564
}
6665

6766
@Override
@@ -70,7 +69,7 @@ public void onFinish() {
7069
}
7170
});
7271
} catch (Exception e){
73-
load = false;
72+
loaded = false;
7473
callback.onFailure(e);
7574
}
7675
}
@@ -95,7 +94,7 @@ public AndroidAudioConverter setCallback(IConvertCallback callback) {
9594
}
9695

9796
public void convert() {
98-
if(!isLoad()){
97+
if(!isLoaded()){
9998
callback.onFailure(new Exception("FFmpeg not loaded"));
10099
return;
101100
}
@@ -108,10 +107,9 @@ public void convert() {
108107
return;
109108
}
110109
final File convertedFile = getConvertedFile(audioFile, format);
111-
String[] cmd = new String[]{"-y", "-i", audioFile.getPath(), convertedFile.getPath()};
110+
final String[] cmd = new String[]{"-y", "-i", audioFile.getPath(), convertedFile.getPath()};
112111
try {
113-
FFmpeg.getInstance(context)
114-
.execute(cmd, new FFmpegExecuteResponseHandler() {
112+
FFmpeg.getInstance(context).execute(cmd, new FFmpegExecuteResponseHandler() {
115113
@Override
116114
public void onStart() {
117115

@@ -144,7 +142,7 @@ public void onFinish() {
144142

145143
private static File getConvertedFile(File originalFile, AudioFormat format){
146144
String[] f = originalFile.getPath().split("\\.");
147-
String filePath = originalFile.getPath().replace("." + f[f.length - 1], "." + format);
145+
String filePath = originalFile.getPath().replace(f[f.length - 1], format.toString());
148146
return new File(filePath);
149147
}
150148
}

0 commit comments

Comments
 (0)