diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index af0f204..f54c50b 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -62,6 +62,7 @@ dependencies {
implementation ("com.google.code.gson:gson:2.10.1")
implementation("com.google.android.material:material:1.11.0")
+ implementation ("com.airbnb.android:lottie:5.2.0")
val room_version = "2.6.1"
implementation("androidx.room:room-runtime:$room_version")
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fdd0ead..8f14ecf 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,11 +3,14 @@
xmlns:tools="http://schemas.android.com/tools">
-
-
+
+
+
+
@@ -38,9 +50,6 @@
-
-
-
\ No newline at end of file
diff --git a/app/src/main/assets/Funny_Sounds_Privacy.html b/app/src/main/assets/Funny_Sounds_Privacy.html
new file mode 100644
index 0000000..2198f7d
--- /dev/null
+++ b/app/src/main/assets/Funny_Sounds_Privacy.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+ Privacy Policy for Funny Sounds: Air Horn
+
+
+
+
+Privacy Policy for Funny Sounds: Air Horn
+July 10, 2024
+ZT Tools ("we", "our", "us") operates the Funny Sounds: Air Horn mobile application (the
+ "Service").
+This page informs you of our policies regarding the collection, use, and disclosure of personal
+ data when you use our Service and the choices you have associated with that data.
+
+Information Collection and Use
+For a better experience while using our Service, we may require you to provide us with certain
+ personally identifiable information, including but not limited to your name, email address, and
+ usage data. The information that we request will be retained on your device and is not collected
+ by us in any way.
+The app does use third-party services that may collect information used to identify you.
+
+Log Data
+We want to inform you that whenever you use our Service, in a case of an error in the app, we
+ collect data and information (through third-party products) on your phone called Log Data. This
+ Log Data may include information such as your device Internet Protocol (“IP”) address, device
+ name, operating system version, the configuration of the app when utilizing our Service, the
+ time and date of your use of the Service, and other statistics.
+
+Cookies
+Cookies are files with a small amount of data that are commonly used as anonymous unique
+ identifiers. These are sent to your browser from the websites that you visit and are stored on
+ your device's internal memory. This Service does not use these “cookies” explicitly. However,
+ the app may use third-party code and libraries that use “cookies” to collect information and
+ improve their services. You have the option to either accept or refuse these cookies and know
+ when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be
+ able to use some portions of this Service.
+
+Service Providers
+We may employ third-party companies and individuals for the following reasons:
+
+ - To facilitate our Service;
+ - To provide the Service on our behalf;
+ - To perform Service-related services; or
+ - To assist us in analyzing how our Service is used.
+
+We want to inform users of this Service that these third parties have access to their Personal
+ Information. The reason is to perform the tasks assigned to them on our behalf. However, they
+ are obligated not to disclose or use the information for any other purpose.
+
+Security
+We value your trust in providing us with your Personal Information, and we strive to use
+ commercially acceptable means of protecting it. However, remember that no method of transmission
+ over the internet or method of electronic storage is 100% secure and reliable, and we cannot
+ guarantee its absolute security.
+
+Links to Other Sites
+This Service may contain links to other sites. If you click on a third-party link, you will be
+ directed to that site. Note that these external sites are not operated by us. Therefore, we
+ strongly advise you to review the Privacy Policy of these websites. We have no control over and
+ assume no responsibility for the content, privacy policies, or practices of any third-party
+ sites or services.
+
+Children’s Privacy
+These Services do not address anyone under the age of 13. We do not knowingly collect personally
+ identifiable information from children under 13 years of age. In the case we discover that a
+ child under 13 has provided us with personal information, we immediately delete this from our
+ servers. If you are a parent or guardian and you are aware that your child has provided us with
+ personal information, please contact us so that we can take the necessary actions.
+
+Changes to This Privacy Policy
+We may update our Privacy Policy from time to time. Thus, you are advised to review this page
+ periodically for any changes. We will notify you of any changes by posting the new Privacy
+ Policy on this page.
+
+Contact Us
+If you have any questions or concerns about our Privacy Policy or data processing, please contact
+ us at: WarrenThorCUIu@gmail.com.
+
+ZT Tools
+
+
+
diff --git a/app/src/main/java/com/example/funnysounds/activity/DetailActivity.java b/app/src/main/java/com/example/funnysounds/activity/DetailActivity.java
index 5610191..9d2343a 100644
--- a/app/src/main/java/com/example/funnysounds/activity/DetailActivity.java
+++ b/app/src/main/java/com/example/funnysounds/activity/DetailActivity.java
@@ -66,6 +66,9 @@ public class DetailActivity extends AppCompatActivity {
imLoop = findViewById(R.id.im_loop);
imAddLove = findViewById(R.id.im_add_love);
pbLoading = findViewById(R.id.loading);
+ Intent intent = getIntent();
+ resource = (MyData) intent.getSerializableExtra(StaticValue.key_resourse);
+ if (resource == null) return;
goGetData();
initMediaPlayer();
setVolume(volumeSeekbar);
@@ -74,21 +77,21 @@ public class DetailActivity extends AppCompatActivity {
}
- public void setVolume(SeekBar seekBar) {
+ public void setVolume(SeekBar seekBar) {
AudioManager audioManager = (AudioManager) Sounds.mAppContext.getSystemService(AppCompatActivity.AUDIO_SERVICE);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
seekBar.setMax(maxVolume);
seekBar.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC));
- getContentResolver().registerContentObserver(Settings.System.CONTENT_URI, true, new ContentObserver(new Handler()) {
- @Override
- public void onChange(boolean selfChange) {
- super.onChange(selfChange);
- int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
- seekBar.setMax(maxVolume);
- }
- });
+ getContentResolver().registerContentObserver(Settings.System.CONTENT_URI, true, new ContentObserver(new Handler()) {
+ @Override
+ public void onChange(boolean selfChange) {
+ super.onChange(selfChange);
+ int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
+ seekBar.setMax(maxVolume);
+ }
+ });
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
@@ -108,9 +111,7 @@ public class DetailActivity extends AppCompatActivity {
}
private void goGetData() {
- Intent intent = getIntent();
- resource = (MyData) intent.getSerializableExtra(StaticValue.key_resourse);
- assert resource != null;
+
textView.setText(resource.getTitle());
media = resource.getMp3Url();
Log.d("----", "---media" + media);
@@ -121,9 +122,9 @@ public class DetailActivity extends AppCompatActivity {
imAddLove.setSelected(myData.isAddLove());
}
});
- if(!resource.isSyStem()){
+ if (!resource.isSyStem()) {
imageView.setImageResource(R.mipmap.default_covert);
- }else {
+ } else {
Glide.with(this).load(resource.getPreUrl()).addListener(new RequestListener() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, @Nullable Object model, @NonNull Target target, boolean isFirstResource) {
@@ -141,20 +142,18 @@ public class DetailActivity extends AppCompatActivity {
private void initMediaPlayer() {
mediaPlayer = new MediaPlayer();
- mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
- mediaPlayer.reset();
String mp3Url = resource.getMp3Url();
//content://com.android.providers.media.documents/document/audio%3A1000000468
- if(resource.isSyStem()){
+ if (resource.isSyStem()) {
mediaPlayer.setDataSource(mp3Url);
- }else {
+ } else {
Uri parse = Uri.parse(mp3Url);
- Log.d(Sounds.TAG,"--------Uri--="+parse);
- mediaPlayer.setDataSource(this,parse);
+ Log.d(Sounds.TAG, "--------Uri--=" + parse);
+ mediaPlayer.setDataSource(this, parse);
}
- mediaPlayer.prepareAsync();
+ mediaPlayer.prepare();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
@@ -170,15 +169,15 @@ public class DetailActivity extends AppCompatActivity {
});
} catch (IOException ioException) {
setLoading(false);
- Log.d(Sounds.TAG,"-----------ioException="+ioException.getCause());
+ Log.d(Sounds.TAG, "-----------ioException=" + ioException.getMessage());
Toast.makeText(this, getString(R.string.load_fail), Toast.LENGTH_SHORT).show();
}
}
- private void setLoading(boolean isLoading){
- if(isLoading){
+ private void setLoading(boolean isLoading) {
+ if (isLoading) {
pbLoading.setVisibility(View.VISIBLE);
- }else {
+ } else {
pbLoading.setVisibility(View.GONE);
}
}
@@ -224,8 +223,8 @@ public class DetailActivity extends AppCompatActivity {
}
});
} else {
- if (mediaPlayer != null) {
- mediaPlayer.pause();
+ if (mediaPlayer != null && mediaPlayer.isPlaying()) {
+ mediaPlayer.stop();
}
}
}
diff --git a/app/src/main/java/com/example/funnysounds/activity/MainActivity.java b/app/src/main/java/com/example/funnysounds/activity/MainActivity.java
index ec81367..b859022 100644
--- a/app/src/main/java/com/example/funnysounds/activity/MainActivity.java
+++ b/app/src/main/java/com/example/funnysounds/activity/MainActivity.java
@@ -61,12 +61,7 @@ public class MainActivity extends AppCompatActivity {
String format = String.format(getString(R.string.app_sounds_version), appVersions);
vb.textVersion.setText(format);
}
- vb.versionLay.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Toast.makeText(MainActivity.this, "This Version is V1.3", Toast.LENGTH_SHORT).show();
- }
- });
+
}
private void initTabVp() {
@@ -141,10 +136,12 @@ public class MainActivity extends AppCompatActivity {
}
private void updateTitle(int position) {
- if (position == 1) {
- vb.textviewSounds.setText(getString(R.string.favorites));
- }else {
+ if (position == 0) {
vb.textviewSounds.setText(getString(R.string.app_name));
+ }else if (position == 1) {
+ vb.textviewSounds.setText(getString(R.string.create_sounds));
+ }else if (position == 2) {
+ vb.textviewSounds.setText(getString(R.string.favorites));
}
}
@@ -160,9 +157,7 @@ public class MainActivity extends AppCompatActivity {
}
private void gotopricy() {
- String url = getString(R.string.url_privacy);
- Intent intent2 = new Intent(Intent.ACTION_VIEW);
- intent2.setData(Uri.parse(url));
+ Intent intent2 = new Intent(MainActivity.this, WebActivity.class);
startActivity(intent2);
}
diff --git a/app/src/main/java/com/example/funnysounds/activity/RecordAudioActivity.java b/app/src/main/java/com/example/funnysounds/activity/RecordAudioActivity.java
new file mode 100644
index 0000000..df85a5b
--- /dev/null
+++ b/app/src/main/java/com/example/funnysounds/activity/RecordAudioActivity.java
@@ -0,0 +1,99 @@
+package com.example.funnysounds.activity;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.Intent;
+import android.media.MediaRecorder;
+import android.os.Bundle;
+import android.os.SystemClock;
+import android.util.Log;
+import android.view.View;
+
+import com.example.funnysounds.R;
+import com.example.funnysounds.databinding.ActivityRecordAudioBinding;
+import com.example.funnysounds.resolve.Utils;
+import com.example.funnysounds.value.StaticValue;
+
+import java.io.File;
+import java.io.IOException;
+
+public class RecordAudioActivity extends AppCompatActivity {
+
+ private ActivityRecordAudioBinding vb;
+ private boolean isRecording = false;
+ private MediaRecorder recorder;
+ private String fileName;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ vb = ActivityRecordAudioBinding.inflate(getLayoutInflater());
+ setContentView(vb.getRoot());
+ vb.top.imAddLove.setVisibility(View.GONE);
+
+ vb.top.dataName.setText(getString(R.string.new_record));
+ vb.top.imageviewBack.setOnClickListener((view) -> finish());
+ initMediaRecorder();
+ init();
+ }
+
+ private void initMediaRecorder() {
+ fileName = String.valueOf(System.currentTimeMillis());
+ File file = Utils.getAudioFile(fileName);
+ recorder = new MediaRecorder();
+ recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
+ recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
+ recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
+ recorder.setOutputFile(file.getAbsolutePath());
+ prepare();
+
+ }
+
+ private void prepare() {
+ try {
+ recorder.prepare();
+ } catch (IOException e) {
+ Log.e("MediaRecorder", "prepare() failed");
+ }
+ }
+
+ private void start() {
+ try {
+ recorder.start();
+ } catch (RuntimeException e) {
+ Log.e("MediaRecorder", "start() failed");
+ }
+ }
+
+ private void stop() {
+ recorder.stop();
+ recorder.release();
+ recorder = null;
+ }
+
+ private void init() {
+ vb.animationView.setRepeatCount(Integer.MAX_VALUE);
+ vb.tvBtnRecord.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ isRecording = !isRecording;
+ if (isRecording) {
+ vb.tvBtnRecord.setText(getString(R.string.stop_record));
+ vb.chronometer.setBase(SystemClock.elapsedRealtime());
+ vb.chronometer.start();
+ vb.animationView.playAnimation();
+ start();
+ } else {
+ // TODO: 2024/9/4
+ vb.animationView.cancelAnimation();
+ vb.chronometer.stop();
+ stop();
+ Intent intent = new Intent(RecordAudioActivity.this, SaveRecordActivity.class);
+ intent.putExtra(StaticValue.key_record_path, fileName);
+ startActivity(intent);
+ finish();
+ }
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/funnysounds/activity/SaveRecordActivity.java b/app/src/main/java/com/example/funnysounds/activity/SaveRecordActivity.java
new file mode 100644
index 0000000..d326420
--- /dev/null
+++ b/app/src/main/java/com/example/funnysounds/activity/SaveRecordActivity.java
@@ -0,0 +1,139 @@
+package com.example.funnysounds.activity;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.media.AudioManager;
+import android.media.MediaPlayer;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.Toast;
+
+import com.example.funnysounds.R;
+import com.example.funnysounds.action.IOListener;
+import com.example.funnysounds.data.MyData;
+import com.example.funnysounds.databinding.ActivitySaveRecordBinding;
+import com.example.funnysounds.resolve.Readfile;
+import com.example.funnysounds.resolve.Sounds;
+import com.example.funnysounds.resolve.Utils;
+import com.example.funnysounds.room.MyRoom;
+import com.example.funnysounds.value.StaticValue;
+
+import java.io.File;
+import java.io.IOException;
+
+public class SaveRecordActivity extends AppCompatActivity {
+
+
+ private ActivitySaveRecordBinding vb;
+ private String fileName;
+ private MediaPlayer mediaPlayer;
+ private File audioFile;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ vb = ActivitySaveRecordBinding.inflate(getLayoutInflater());
+ setContentView(vb.getRoot());
+ setLoading(true);
+ vb.top.dataName.setText(getString(R.string.save_sound));
+ vb.top.imAddLove.setVisibility(View.GONE);
+ vb.top.imageviewBack.setOnClickListener((view) -> finish());
+ init();
+
+ }
+
+ private void init() {
+ fileName = getIntent().getStringExtra(StaticValue.key_record_path);
+ initMediaPlayer();
+ vb.btnPlayPause.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ vb.btnPlayPause.setSelected(!vb.btnPlayPause.isSelected());
+ if (vb.btnPlayPause.isSelected()) {
+ if (mediaPlayer != null && !mediaPlayer.isPlaying()) {
+ mediaPlayer.start();
+ }
+ } else {
+ if (mediaPlayer != null) {
+ mediaPlayer.pause();
+ }
+ }
+ }
+ });
+ vb.tvBtnRecord.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String newName = vb.etName.getText().toString();
+ if (newName.isEmpty()) {
+ Toast.makeText(SaveRecordActivity.this, getString(R.string.input_name), Toast.LENGTH_SHORT).show();
+ } else {
+ File newFile = Utils.getAudioFile(newName);
+ boolean b = audioFile.renameTo(newFile);
+ if (b) {
+ addRoom(newFile,newName);
+ Toast.makeText(SaveRecordActivity.this, getString(R.string.rename_success), Toast.LENGTH_SHORT).show();
+ finish();
+ } else {
+ Toast.makeText(SaveRecordActivity.this, getString(R.string.rename_fail), Toast.LENGTH_SHORT).show();
+ }
+
+ }
+ }
+ });
+ }
+
+ private void addRoom(File newFile,String newName){
+ MyData myData = new MyData();
+ myData.setCategoryId(1);
+ myData.setSyStem(false);
+ myData.setTitle(newName);
+ myData.setMp3Url(newFile.getAbsolutePath());
+ Readfile.onSwitchIO(new IOListener() {
+ @Override
+ public void onRunIOAction() {
+ MyRoom.getInstance().getDataDao().insertPrank(myData);
+ }
+ });
+ }
+
+ private void initMediaPlayer() {
+ mediaPlayer = new MediaPlayer();
+ mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
+ try {
+ mediaPlayer.reset();
+ Log.d(Sounds.TAG, "-------path=" + fileName);
+ audioFile = Utils.getAudioFile(fileName);
+ mediaPlayer.setDataSource(audioFile.getAbsolutePath());
+ mediaPlayer.prepareAsync();
+ mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
+ @Override
+ public void onPrepared(MediaPlayer mp) {
+ setLoading(false);
+ }
+ });
+
+ mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
+ @Override
+ public void onCompletion(MediaPlayer mp) {
+ vb.btnPlayPause.setSelected(false);
+ }
+ });
+ } catch (IOException ioException) {
+ setLoading(false);
+ Log.d(Sounds.TAG, "-----------ioException=" + ioException.getCause());
+ Toast.makeText(this, getString(R.string.load_fail), Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ private void setLoading(boolean isloading) {
+ if (isloading) {
+ vb.btnPlayPause.setVisibility(View.GONE);
+ vb.loading.setVisibility(View.VISIBLE);
+ } else {
+ vb.loading.setVisibility(View.GONE);
+ vb.btnPlayPause.setVisibility(View.VISIBLE);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/funnysounds/activity/SpecifisoundsActivity.java b/app/src/main/java/com/example/funnysounds/activity/SpecifisoundsActivity.java
index 85a2d23..ce3c73c 100644
--- a/app/src/main/java/com/example/funnysounds/activity/SpecifisoundsActivity.java
+++ b/app/src/main/java/com/example/funnysounds/activity/SpecifisoundsActivity.java
@@ -44,7 +44,8 @@ public class SpecifisoundsActivity extends AppCompatActivity implements MyDataSo
setContentView(R.layout.activity_specifisounds);
recyclerview_specific = findViewById(R.id.recyclerview_specific);
imageView = findViewById(R.id.imageview_back);
- cName = findViewById(R.id.categoryname);
+ cName = findViewById(R.id.data_name);
+ findViewById(R.id.im_add_love).setVisibility(View.GONE);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
diff --git a/app/src/main/java/com/example/funnysounds/activity/WebActivity.java b/app/src/main/java/com/example/funnysounds/activity/WebActivity.java
new file mode 100644
index 0000000..9bcbcc5
--- /dev/null
+++ b/app/src/main/java/com/example/funnysounds/activity/WebActivity.java
@@ -0,0 +1,35 @@
+package com.example.funnysounds.activity;
+
+import android.os.Bundle;
+import android.view.View;
+import android.webkit.WebViewClient;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.example.funnysounds.R;
+import com.example.funnysounds.databinding.ActivityWebBinding;
+
+
+public class WebActivity extends AppCompatActivity {
+
+ private ActivityWebBinding vb;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ vb = ActivityWebBinding.inflate(getLayoutInflater());
+ setContentView(vb.getRoot());
+ vb.top.imAddLove.setVisibility(View.GONE);
+ vb.top.dataName.setText(getString(R.string.privacy_policy));
+ vb.top.imageviewBack.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ finish();
+ }
+ });
+
+ vb.web.getSettings().setJavaScriptEnabled(true);
+ vb.web.setWebViewClient(new WebViewClient());
+ vb.web.loadUrl("file:///android_asset/Funny_Sounds_Privacy.html");
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/funnysounds/fragement/RecordFragment.java b/app/src/main/java/com/example/funnysounds/fragement/RecordFragment.java
index 3105ad8..42d07bd 100644
--- a/app/src/main/java/com/example/funnysounds/fragement/RecordFragment.java
+++ b/app/src/main/java/com/example/funnysounds/fragement/RecordFragment.java
@@ -27,6 +27,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import com.example.funnysounds.action.IOListener;
import com.example.funnysounds.action.RecordDialogClickListener;
+import com.example.funnysounds.activity.RecordAudioActivity;
import com.example.funnysounds.data.MyData;
import com.example.funnysounds.databinding.FragmentRecordBinding;
import com.example.funnysounds.dialog.RecordDialog;
@@ -34,7 +35,6 @@ import com.example.funnysounds.resolve.MySpace;
import com.example.funnysounds.resolve.Readfile;
import com.example.funnysounds.resolve.Sounds;
import com.example.funnysounds.room.MyRoom;
-import com.example.funnysounds.soundsadapter.LoveAdapter;
import com.example.funnysounds.soundsadapter.RecordAdapter;
import java.util.List;
@@ -48,6 +48,13 @@ public class RecordFragment extends Fragment {
private RecordDialog dialog;
private String[] permission1 = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
private String[] permission2 = {Manifest.permission.READ_MEDIA_AUDIO};
+
+ private String[] permission_recordAudio = {Manifest.permission.RECORD_AUDIO};
+
+ /**
+ * 0 import 1 record
+ */
+ private int clickType = 0;
private ActivityResultLauncher audioSelectLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback() {
@Override
public void onActivityResult(ActivityResult o) {
@@ -71,7 +78,7 @@ public class RecordFragment extends Fragment {
}
});
// 处理选中的音频URI
- Log.d(Sounds.TAG, "--------audioUri=" + audioUri+"---audioPathFromUri="+name +"--------decode-----"+decode);
+ Log.d(Sounds.TAG, "--------audioUri=" + audioUri + "---audioPathFromUri=" + name + "--------decode-----" + decode);
}
}
@@ -84,12 +91,15 @@ public class RecordFragment extends Fragment {
boolean isOK = true;
for (String key : o.keySet()) {
Boolean aBoolean = o.get(key);
- Log.d(Sounds.TAG, "-----key="+key+"---aBoolean=" + aBoolean);
+ Log.d(Sounds.TAG, "-----key=" + key + "---aBoolean=" + aBoolean);
if (aBoolean != null)
isOK = aBoolean;
}
- if(isOK){
- selectAudio();
+ if (isOK) {
+ if (clickType == 0)
+ selectAudio();
+ else
+ goRecord();
}
}
@@ -123,11 +133,14 @@ public class RecordFragment extends Fragment {
dialog = RecordDialog.newInstance(new RecordDialogClickListener() {
@Override
public void onImport() {
- checkPermissionAudio();
+ clickType = 0;
+ checkPermissionImportAudio();
}
@Override
public void onRecord() {
+ clickType = 1;
+ checkPermissionRecordAudio();
}
});
@@ -136,7 +149,18 @@ public class RecordFragment extends Fragment {
}
});
}
- private void checkPermissionAudio() {
+
+ private void checkPermissionRecordAudio() {
+ int i = ContextCompat.checkSelfPermission(requireActivity(), permission_recordAudio[0]);
+ if (i != PackageManager.PERMISSION_GRANTED) {
+ permissionLauncher.launch(permission_recordAudio);
+ } else {
+ goRecord();
+ }
+
+ }
+
+ private void checkPermissionImportAudio() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
int i = ContextCompat.checkSelfPermission(requireActivity(), Manifest.permission.READ_MEDIA_AUDIO);
if (i != PackageManager.PERMISSION_GRANTED) {
@@ -152,8 +176,6 @@ public class RecordFragment extends Fragment {
selectAudio();
}
}
-
-
}
private void selectAudio() {
@@ -162,6 +184,11 @@ public class RecordFragment extends Fragment {
audioSelectLauncher.launch(Intent.createChooser(intent, "Select Audio"));
}
+ private void goRecord() {
+ Intent intent = new Intent(requireActivity(), RecordAudioActivity.class);
+ startActivity(intent);
+ }
+
private void init() {
MySpace mySpace = new MySpace(20, 20, 25);
LinearLayoutManager layoutManager = new LinearLayoutManager(requireActivity());
diff --git a/app/src/main/java/com/example/funnysounds/resolve/Utils.java b/app/src/main/java/com/example/funnysounds/resolve/Utils.java
new file mode 100644
index 0000000..ece64ae
--- /dev/null
+++ b/app/src/main/java/com/example/funnysounds/resolve/Utils.java
@@ -0,0 +1,10 @@
+package com.example.funnysounds.resolve;
+
+import java.io.File;
+
+public class Utils {
+
+ public static File getAudioFile(String name) {
+ return new File(Sounds.mAppContext.getExternalCacheDir(), name + ".amr");
+ }
+}
diff --git a/app/src/main/java/com/example/funnysounds/room/DataDao.java b/app/src/main/java/com/example/funnysounds/room/DataDao.java
index f06c518..0ab53a8 100644
--- a/app/src/main/java/com/example/funnysounds/room/DataDao.java
+++ b/app/src/main/java/com/example/funnysounds/room/DataDao.java
@@ -2,6 +2,7 @@ package com.example.funnysounds.room;
import androidx.lifecycle.LiveData;
import androidx.room.Dao;
+import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
@@ -34,4 +35,7 @@ public interface DataDao {
LiveData queryAudioIsLove(long mid);
@Update
void updatePrank(MyData myData);
+
+ @Delete
+ void deletePrank(MyData myData);
}
diff --git a/app/src/main/java/com/example/funnysounds/soundsadapter/RecordAdapter.java b/app/src/main/java/com/example/funnysounds/soundsadapter/RecordAdapter.java
index 71aac4c..fcfce60 100644
--- a/app/src/main/java/com/example/funnysounds/soundsadapter/RecordAdapter.java
+++ b/app/src/main/java/com/example/funnysounds/soundsadapter/RecordAdapter.java
@@ -1,7 +1,9 @@
package com.example.funnysounds.soundsadapter;
+import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -69,7 +71,21 @@ public class RecordAdapter extends RecyclerView.Adapter {
}else {
holder.getVb().imSounds.setImageResource(R.mipmap.default_covert);
}
+ holder.getVb().imDelete.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Log.d(Sounds.TAG,"---------holder.getAdapterPosition()="+holder.getAdapterPosition());
+ notifyItemRemoved(holder.getAdapterPosition());
+ Toast.makeText(myContext, myContext.getString(R.string.deleted_successfully), Toast.LENGTH_SHORT).show();
+ Readfile.onSwitchIO(new IOListener() {
+ @Override
+ public void onRunIOAction() {
+ MyRoom.getInstance().getDataDao().deletePrank(myData);
+ }
+ });
+ }
+ });
holder.getVb().getRoot().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
diff --git a/app/src/main/java/com/example/funnysounds/value/StaticValue.java b/app/src/main/java/com/example/funnysounds/value/StaticValue.java
index 57d56a5..6874e18 100644
--- a/app/src/main/java/com/example/funnysounds/value/StaticValue.java
+++ b/app/src/main/java/com/example/funnysounds/value/StaticValue.java
@@ -5,4 +5,7 @@ public class StaticValue {
public static final String key_resourse = "key_resourse";
+
+ public static final String key_record_path= "key_path";
+
}
diff --git a/app/src/main/res/drawable/im_delete.xml b/app/src/main/res/drawable/im_delete.xml
new file mode 100644
index 0000000..1c13c0c
--- /dev/null
+++ b/app/src/main/res/drawable/im_delete.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/shape_edit_record_name.xml b/app/src/main/res/drawable/shape_edit_record_name.xml
new file mode 100644
index 0000000..89e3424
--- /dev/null
+++ b/app/src/main/res/drawable/shape_edit_record_name.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_detail.xml b/app/src/main/res/layout/activity_detail.xml
index a7c7f7e..043ed24 100644
--- a/app/src/main/res/layout/activity_detail.xml
+++ b/app/src/main/res/layout/activity_detail.xml
@@ -7,42 +7,8 @@
android:orientation="vertical"
tools:context=".activity.DetailActivity">
-
+
-
-
-
-
-
-
-
@@ -74,6 +75,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="right"
+ android:clickable="true"
android:background="@color/white">
+ android:textSize="15sp" />
+ android:textSize="15sp" />
+ android:textSize="15sp" />
diff --git a/app/src/main/res/layout/activity_record_audio.xml b/app/src/main/res/layout/activity_record_audio.xml
new file mode 100644
index 0000000..df808e8
--- /dev/null
+++ b/app/src/main/res/layout/activity_record_audio.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_save_record.xml b/app/src/main/res/layout/activity_save_record.xml
new file mode 100644
index 0000000..c0a3d4b
--- /dev/null
+++ b/app/src/main/res/layout/activity_save_record.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_specifisounds.xml b/app/src/main/res/layout/activity_specifisounds.xml
index e5a1d6d..61d09fc 100644
--- a/app/src/main/res/layout/activity_specifisounds.xml
+++ b/app/src/main/res/layout/activity_specifisounds.xml
@@ -8,32 +8,8 @@
android:orientation="vertical"
tools:context=".activity.SpecifisoundsActivity">
-
+
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/comon_layout_top.xml b/app/src/main/res/layout/comon_layout_top.xml
new file mode 100644
index 0000000..2db00d1
--- /dev/null
+++ b/app/src/main/res/layout/comon_layout_top.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_love.xml b/app/src/main/res/layout/fragment_love.xml
index 0a1845c..89a5ac7 100644
--- a/app/src/main/res/layout/fragment_love.xml
+++ b/app/src/main/res/layout/fragment_love.xml
@@ -16,6 +16,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
- android:text="@string/no_favorites" />
+ android:text="@string/no_favorites"
+ android:textColor="@color/text_color_gray"
+ android:textSize="17sp" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_record.xml b/app/src/main/res/layout/fragment_record.xml
index a107a24..226bfed 100644
--- a/app/src/main/res/layout/fragment_record.xml
+++ b/app/src/main/res/layout/fragment_record.xml
@@ -17,7 +17,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
- android:layout_centerHorizontal="true"
android:layout_marginStart="36dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="36dp"
diff --git a/app/src/main/res/layout/item_record.xml b/app/src/main/res/layout/item_record.xml
index 683655b..54c618c 100644
--- a/app/src/main/res/layout/item_record.xml
+++ b/app/src/main/res/layout/item_record.xml
@@ -29,6 +29,15 @@
android:textColor="@color/black"
android:textSize="15sp" />
-
+
\ No newline at end of file
diff --git a/app/src/main/res/raw/anima.json b/app/src/main/res/raw/anima.json
new file mode 100644
index 0000000..1d29024
--- /dev/null
+++ b/app/src/main/res/raw/anima.json
@@ -0,0 +1,2716 @@
+{
+ "nm": "newScene",
+ "ddd": 0,
+ "h": 470,
+ "w": 470,
+ "meta": {
+ "g": "@lottiefiles/toolkit-js 0.33.2"
+ },
+ "layers": [
+ {
+ "ty": 4,
+ "nm": "pill top",
+ "sr": 1,
+ "st": 0,
+ "op": 1000,
+ "ip": 0,
+ "hd": false,
+ "ddd": 0,
+ "bm": 0,
+ "hasMask": false,
+ "ao": 0,
+ "ks": {
+ "a": {
+ "a": 0,
+ "k": [
+ 3.5,
+ -29.75,
+ 0
+ ]
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ -100,
+ 100
+ ]
+ },
+ "sk": {
+ "a": 0,
+ "k": 0
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 237,
+ 220.75,
+ 0
+ ]
+ },
+ "r": {
+ "a": 0,
+ "k": 0
+ },
+ "sa": {
+ "a": 0,
+ "k": 0
+ },
+ "o": {
+ "a": 0,
+ "k": 100
+ }
+ },
+ "ef": [],
+ "shapes": [
+ {
+ "ty": "gr",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Group",
+ "nm": "Rectangle 1",
+ "np": 4,
+ "it": [
+ {
+ "ty": "rc",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Shape - Rect",
+ "nm": "Rectangle Path 1",
+ "d": 1,
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ]
+ },
+ "r": {
+ "a": 0,
+ "k": 20
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 26.627,
+ 55.588
+ ]
+ }
+ },
+ {
+ "ty": "tm",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Filter - Trim",
+ "nm": "Trim Paths 1",
+ "ix": 2,
+ "e": {
+ "a": 0,
+ "k": 61,
+ "ix": 2
+ },
+ "o": {
+ "a": 0,
+ "k": 0,
+ "ix": 3
+ },
+ "s": {
+ "a": 0,
+ "k": 16,
+ "ix": 1
+ },
+ "m": 1
+ },
+ {
+ "ty": "st",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Graphic - Stroke",
+ "nm": "Stroke 1",
+ "lc": 1,
+ "lj": 1,
+ "ml": 4,
+ "o": {
+ "a": 0,
+ "k": 100
+ },
+ "w": {
+ "a": 0,
+ "k": 4
+ },
+ "c": {
+ "a": 0,
+ "k": [
+ 1,
+ 1,
+ 1
+ ]
+ }
+ },
+ {
+ "ty": "tr",
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100
+ ],
+ "ix": 3
+ },
+ "sk": {
+ "a": 0,
+ "k": 0,
+ "ix": 4
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 3.627,
+ -30.815
+ ],
+ "ix": 2
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 6
+ },
+ "sa": {
+ "a": 0,
+ "k": 0,
+ "ix": 5
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 7
+ }
+ }
+ ]
+ }
+ ],
+ "ind": 1
+ },
+ {
+ "ty": 4,
+ "nm": "pill down",
+ "sr": 1,
+ "st": 0,
+ "op": 1000,
+ "ip": 0,
+ "hd": false,
+ "ddd": 0,
+ "bm": 0,
+ "hasMask": false,
+ "ao": 0,
+ "ks": {
+ "a": {
+ "a": 0,
+ "k": [
+ 3.5,
+ -29.75,
+ 0
+ ]
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100,
+ 100
+ ]
+ },
+ "sk": {
+ "a": 0,
+ "k": 0
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 237,
+ 220.75,
+ 0
+ ]
+ },
+ "r": {
+ "a": 0,
+ "k": 0
+ },
+ "sa": {
+ "a": 0,
+ "k": 0
+ },
+ "o": {
+ "a": 0,
+ "k": 100
+ }
+ },
+ "ef": [],
+ "shapes": [
+ {
+ "ty": "gr",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Group",
+ "nm": "Rectangle 1",
+ "np": 4,
+ "it": [
+ {
+ "ty": "rc",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Shape - Rect",
+ "nm": "Rectangle Path 1",
+ "d": 1,
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ]
+ },
+ "r": {
+ "a": 0,
+ "k": 20
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 26.627,
+ 55.588
+ ]
+ }
+ },
+ {
+ "ty": "tm",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Filter - Trim",
+ "nm": "Trim Paths 1",
+ "ix": 2,
+ "e": {
+ "a": 0,
+ "k": 58,
+ "ix": 2
+ },
+ "o": {
+ "a": 0,
+ "k": 0,
+ "ix": 3
+ },
+ "s": {
+ "a": 0,
+ "k": 0,
+ "ix": 1
+ },
+ "m": 1
+ },
+ {
+ "ty": "st",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Graphic - Stroke",
+ "nm": "Stroke 1",
+ "lc": 1,
+ "lj": 1,
+ "ml": 4,
+ "o": {
+ "a": 0,
+ "k": 100
+ },
+ "w": {
+ "a": 0,
+ "k": 4
+ },
+ "c": {
+ "a": 0,
+ "k": [
+ 1,
+ 1,
+ 1
+ ]
+ }
+ },
+ {
+ "ty": "tr",
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100
+ ],
+ "ix": 3
+ },
+ "sk": {
+ "a": 0,
+ "k": 0,
+ "ix": 4
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 3.627,
+ -30.815
+ ],
+ "ix": 2
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 6
+ },
+ "sa": {
+ "a": 0,
+ "k": 0,
+ "ix": 5
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 7
+ }
+ }
+ ]
+ }
+ ],
+ "ind": 2
+ },
+ {
+ "ty": 4,
+ "nm": "base",
+ "sr": 1,
+ "st": 0,
+ "op": 1000,
+ "ip": 0,
+ "hd": false,
+ "ddd": 0,
+ "bm": 0,
+ "hasMask": false,
+ "ao": 0,
+ "ks": {
+ "a": {
+ "a": 0,
+ "k": [
+ 3.25,
+ 23.5,
+ 0
+ ]
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100,
+ 100
+ ]
+ },
+ "sk": {
+ "a": 0,
+ "k": 0
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 236.802,
+ 274,
+ 0
+ ]
+ },
+ "r": {
+ "a": 0,
+ "k": 0
+ },
+ "sa": {
+ "a": 0,
+ "k": 0
+ },
+ "o": {
+ "a": 0,
+ "k": 100
+ }
+ },
+ "ef": [],
+ "shapes": [
+ {
+ "ty": "gr",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Group",
+ "nm": "Rectangle 1",
+ "np": 3,
+ "it": [
+ {
+ "ty": "rc",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Shape - Rect",
+ "nm": "Rectangle Path 1",
+ "d": 1,
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ]
+ },
+ "r": {
+ "a": 0,
+ "k": 20
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 3.99,
+ 18.391
+ ]
+ }
+ },
+ {
+ "ty": "fl",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Graphic - Fill",
+ "nm": "Fill 1",
+ "c": {
+ "a": 0,
+ "k": [
+ 1,
+ 1,
+ 1
+ ]
+ },
+ "r": 1,
+ "o": {
+ "a": 0,
+ "k": 100
+ }
+ },
+ {
+ "ty": "tr",
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 123.795,
+ 100
+ ],
+ "ix": 3
+ },
+ "sk": {
+ "a": 0,
+ "k": 0,
+ "ix": 4
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 3.575,
+ 23.858
+ ],
+ "ix": 2
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 6
+ },
+ "sa": {
+ "a": 0,
+ "k": 0,
+ "ix": 5
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 7
+ }
+ }
+ ]
+ }
+ ],
+ "ind": 3
+ },
+ {
+ "ty": 4,
+ "nm": "Half rign",
+ "sr": 1,
+ "st": 0,
+ "op": 116,
+ "ip": 0,
+ "hd": false,
+ "ddd": 0,
+ "bm": 0,
+ "hasMask": false,
+ "ao": 0,
+ "ks": {
+ "a": {
+ "a": 0,
+ "k": [
+ 3,
+ -16.25,
+ 0
+ ]
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100,
+ 100
+ ]
+ },
+ "sk": {
+ "a": 0,
+ "k": 0
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 236.533,
+ 234.25,
+ 0
+ ]
+ },
+ "r": {
+ "a": 0,
+ "k": 0
+ },
+ "sa": {
+ "a": 0,
+ "k": 0
+ },
+ "o": {
+ "a": 0,
+ "k": 100
+ }
+ },
+ "ef": [],
+ "shapes": [
+ {
+ "ty": "gr",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Group",
+ "nm": "Ellipse 1",
+ "np": 4,
+ "it": [
+ {
+ "ty": "el",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Shape - Ellipse",
+ "nm": "Ellipse Path 1",
+ "d": 1,
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ]
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 44.426,
+ 44.426
+ ]
+ }
+ },
+ {
+ "ty": "tm",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Filter - Trim",
+ "nm": "Trim Paths 1",
+ "ix": 2,
+ "e": {
+ "a": 0,
+ "k": 75,
+ "ix": 2
+ },
+ "o": {
+ "a": 0,
+ "k": 0,
+ "ix": 3
+ },
+ "s": {
+ "a": 0,
+ "k": 25,
+ "ix": 1
+ },
+ "m": 1
+ },
+ {
+ "ty": "st",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Graphic - Stroke",
+ "nm": "Stroke 1",
+ "lc": 2,
+ "lj": 1,
+ "ml": 4,
+ "o": {
+ "a": 0,
+ "k": 100
+ },
+ "w": {
+ "a": 0,
+ "k": 3
+ },
+ "c": {
+ "a": 0,
+ "k": [
+ 1,
+ 1,
+ 1
+ ]
+ }
+ },
+ {
+ "ty": "tr",
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 137.481,
+ 137.481
+ ],
+ "ix": 3
+ },
+ "sk": {
+ "a": 0,
+ "k": 0,
+ "ix": 4
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 3.594,
+ -15.692
+ ],
+ "ix": 2
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 6
+ },
+ "sa": {
+ "a": 0,
+ "k": 0,
+ "ix": 5
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 7
+ }
+ }
+ ]
+ }
+ ],
+ "ind": 4
+ },
+ {
+ "ty": 4,
+ "nm": "01",
+ "sr": 1,
+ "st": 0,
+ "op": 116,
+ "ip": 0,
+ "hd": false,
+ "ddd": 0,
+ "bm": 0,
+ "hasMask": false,
+ "ao": 0,
+ "ks": {
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0,
+ 0
+ ]
+ },
+ "s": {
+ "a": 1,
+ "k": [
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 0
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 130,
+ 130,
+ 100
+ ],
+ "t": 22.562
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 41.365
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 130,
+ 130,
+ 100
+ ],
+ "t": 62.047
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 80.85
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 130,
+ 130,
+ 100
+ ],
+ "t": 99.651
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 116.574
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 130,
+ 130,
+ 100
+ ],
+ "t": 131.616
+ },
+ {
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 148.5380859375
+ }
+ ]
+ },
+ "sk": {
+ "a": 0,
+ "k": 0
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 235,
+ 235,
+ 0
+ ]
+ },
+ "r": {
+ "a": 0,
+ "k": 0
+ },
+ "sa": {
+ "a": 0,
+ "k": 0
+ },
+ "o": {
+ "a": 0,
+ "k": 100
+ }
+ },
+ "ef": [],
+ "shapes": [
+ {
+ "ty": "gr",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Group",
+ "nm": "Ellipse 1",
+ "np": 3,
+ "it": [
+ {
+ "ty": "el",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Shape - Ellipse",
+ "nm": "Ellipse Path 1",
+ "d": 1,
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ]
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 198.609,
+ 198.609
+ ]
+ }
+ },
+ {
+ "ty": "fl",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Graphic - Fill",
+ "nm": "Fill 1",
+ "c": {
+ "a": 0,
+ "k":[0.4471, 0.7843, 0.8353, 1]
+ },
+ "r": 1,
+ "o": {
+ "a": 0,
+ "k": 100
+ }
+ },
+ {
+ "ty": "tr",
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100
+ ],
+ "ix": 3
+ },
+ "sk": {
+ "a": 0,
+ "k": 0,
+ "ix": 4
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 1,
+ 1
+ ],
+ "ix": 2
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 6
+ },
+ "sa": {
+ "a": 0,
+ "k": 0,
+ "ix": 5
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 7
+ }
+ }
+ ]
+ }
+ ],
+ "ind": 5
+ },
+ {
+ "ty": 4,
+ "nm": "02",
+ "sr": 1,
+ "st": 0,
+ "op": 116,
+ "ip": 0,
+ "hd": false,
+ "ddd": 0,
+ "bm": 0,
+ "hasMask": false,
+ "ao": 0,
+ "ks": {
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0,
+ 0
+ ]
+ },
+ "s": {
+ "a": 1,
+ "k": [
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 0
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 162,
+ 162,
+ 100
+ ],
+ "t": 22.562
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 99,
+ 99,
+ 100
+ ],
+ "t": 41.365
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 162,
+ 162,
+ 100
+ ],
+ "t": 62.047
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 130,
+ 130,
+ 100
+ ],
+ "t": 80.85
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 0.97
+ },
+ "s": [
+ 162,
+ 162,
+ 100
+ ],
+ "t": 99.651
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": -0.002
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 116
+ },
+ {
+ "o": {
+ "x": 0.167,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 133,
+ 133,
+ 100
+ ],
+ "t": 116.574
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 162,
+ 162,
+ 100
+ ],
+ "t": 131.616
+ },
+ {
+ "s": [
+ 99,
+ 99,
+ 100
+ ],
+ "t": 148.5380859375
+ }
+ ]
+ },
+ "sk": {
+ "a": 0,
+ "k": 0
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 235,
+ 235,
+ 0
+ ]
+ },
+ "r": {
+ "a": 0,
+ "k": 0
+ },
+ "sa": {
+ "a": 0,
+ "k": 0
+ },
+ "o": {
+ "a": 0,
+ "k": 50
+ }
+ },
+ "ef": [],
+ "shapes": [
+ {
+ "ty": "gr",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Group",
+ "nm": "Ellipse 1",
+ "np": 3,
+ "it": [
+ {
+ "ty": "el",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Shape - Ellipse",
+ "nm": "Ellipse Path 1",
+ "d": 1,
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ]
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 198.609,
+ 198.609
+ ]
+ }
+ },
+ {
+ "ty": "fl",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Graphic - Fill",
+ "nm": "Fill 1",
+ "c": {
+ "a": 0,
+ "k":[0.4471, 0.7843, 0.8353, 1]
+ },
+ "r": 1,
+ "o": {
+ "a": 0,
+ "k": 100
+ }
+ },
+ {
+ "ty": "tr",
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100
+ ],
+ "ix": 3
+ },
+ "sk": {
+ "a": 0,
+ "k": 0,
+ "ix": 4
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 1,
+ 1
+ ],
+ "ix": 2
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 6
+ },
+ "sa": {
+ "a": 0,
+ "k": 0,
+ "ix": 5
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 7
+ }
+ }
+ ]
+ }
+ ],
+ "ind": 6
+ },
+ {
+ "ty": 4,
+ "nm": "03",
+ "sr": 1,
+ "st": 0,
+ "op": 116,
+ "ip": 0,
+ "hd": false,
+ "ddd": 0,
+ "bm": 0,
+ "hasMask": false,
+ "ao": 0,
+ "ks": {
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0,
+ 0
+ ]
+ },
+ "s": {
+ "a": 1,
+ "k": [
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 0
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 190,
+ 190,
+ 100
+ ],
+ "t": 22.562
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 151,
+ 151,
+ 100
+ ],
+ "t": 41.365
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 195,
+ 195,
+ 100
+ ],
+ "t": 62.047
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 160,
+ 160,
+ 100
+ ],
+ "t": 80.85
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 0.947
+ },
+ "s": [
+ 195,
+ 195,
+ 100
+ ],
+ "t": 99.651
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": -0.012
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 116
+ },
+ {
+ "o": {
+ "x": 0.167,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 115,
+ 115,
+ 100
+ ],
+ "t": 116.574
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 195,
+ 195,
+ 100
+ ],
+ "t": 131.616
+ },
+ {
+ "s": [
+ 99,
+ 99,
+ 100
+ ],
+ "t": 148.5380859375
+ }
+ ]
+ },
+ "sk": {
+ "a": 0,
+ "k": 0
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 235,
+ 235,
+ 0
+ ]
+ },
+ "r": {
+ "a": 0,
+ "k": 0
+ },
+ "sa": {
+ "a": 0,
+ "k": 0
+ },
+ "o": {
+ "a": 0,
+ "k": 30
+ }
+ },
+ "ef": [],
+ "shapes": [
+ {
+ "ty": "gr",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Group",
+ "nm": "Ellipse 1",
+ "np": 3,
+ "it": [
+ {
+ "ty": "el",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Shape - Ellipse",
+ "nm": "Ellipse Path 1",
+ "d": 1,
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ]
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 198.609,
+ 198.609
+ ]
+ }
+ },
+ {
+ "ty": "fl",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Graphic - Fill",
+ "nm": "Fill 1",
+ "c": {
+ "a": 0,
+ "k":[0.4471, 0.7843, 0.8353, 1]
+ },
+ "r": 1,
+ "o": {
+ "a": 0,
+ "k": 100
+ }
+ },
+ {
+ "ty": "tr",
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100
+ ],
+ "ix": 3
+ },
+ "sk": {
+ "a": 0,
+ "k": 0,
+ "ix": 4
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 1,
+ 1
+ ],
+ "ix": 2
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 6
+ },
+ "sa": {
+ "a": 0,
+ "k": 0,
+ "ix": 5
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 7
+ }
+ }
+ ]
+ }
+ ],
+ "ind": 7
+ },
+ {
+ "ty": 4,
+ "nm": "04",
+ "sr": 1,
+ "st": 0,
+ "op": 116,
+ "ip": 0,
+ "hd": false,
+ "ddd": 0,
+ "bm": 0,
+ "hasMask": false,
+ "ao": 0,
+ "ks": {
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0,
+ 0
+ ]
+ },
+ "s": {
+ "a": 1,
+ "k": [
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 0
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 130,
+ 130,
+ 100
+ ],
+ "t": 22.562
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 41.365
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 130,
+ 130,
+ 100
+ ],
+ "t": 62.047
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 80.85
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 130,
+ 130,
+ 100
+ ],
+ "t": 99.651
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 116.574
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 130,
+ 130,
+ 100
+ ],
+ "t": 131.616
+ },
+ {
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 148.5380859375
+ }
+ ]
+ },
+ "sk": {
+ "a": 0,
+ "k": 0
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 235,
+ 235,
+ 0
+ ]
+ },
+ "r": {
+ "a": 0,
+ "k": 0
+ },
+ "sa": {
+ "a": 0,
+ "k": 0
+ },
+ "o": {
+ "a": 0,
+ "k": 100
+ }
+ },
+ "ef": [],
+ "shapes": [
+ {
+ "ty": "gr",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Group",
+ "nm": "Ellipse 1",
+ "np": 3,
+ "it": [
+ {
+ "ty": "el",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Shape - Ellipse",
+ "nm": "Ellipse Path 1",
+ "d": 1,
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ]
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 198.609,
+ 198.609
+ ]
+ }
+ },
+ {
+ "ty": "fl",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Graphic - Fill",
+ "nm": "Fill 1",
+ "c": {
+ "a": 0,
+ "k":[0.4471, 0.7843, 0.8353, 1]
+ },
+ "r": 1,
+ "o": {
+ "a": 0,
+ "k": 100
+ }
+ },
+ {
+ "ty": "tr",
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100
+ ],
+ "ix": 3
+ },
+ "sk": {
+ "a": 0,
+ "k": 0,
+ "ix": 4
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 1,
+ 1
+ ],
+ "ix": 2
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 6
+ },
+ "sa": {
+ "a": 0,
+ "k": 0,
+ "ix": 5
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 7
+ }
+ }
+ ]
+ }
+ ],
+ "ind": 8
+ },
+ {
+ "ty": 4,
+ "nm": "transparent1",
+ "sr": 1,
+ "st": 0,
+ "op": 116,
+ "ip": 0,
+ "hd": false,
+ "ddd": 0,
+ "bm": 0,
+ "hasMask": false,
+ "ao": 0,
+ "ks": {
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0,
+ 0
+ ]
+ },
+ "s": {
+ "a": 1,
+ "k": [
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 0
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 224,
+ 224,
+ 100
+ ],
+ "t": 22.562
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 127,
+ 127,
+ 100
+ ],
+ "t": 41.365
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 224,
+ 224,
+ 100
+ ],
+ "t": 62.047
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 145,
+ 145,
+ 100
+ ],
+ "t": 80.85
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 0.944
+ },
+ "s": [
+ 224,
+ 224,
+ 100
+ ],
+ "t": 99.651
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": -0.016
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 116
+ },
+ {
+ "o": {
+ "x": 0.167,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 115,
+ 115,
+ 100
+ ],
+ "t": 116.574
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 224,
+ 224,
+ 100
+ ],
+ "t": 131.616
+ },
+ {
+ "s": [
+ 99,
+ 99,
+ 100
+ ],
+ "t": 148.5380859375
+ }
+ ]
+ },
+ "sk": {
+ "a": 0,
+ "k": 0
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 235,
+ 235,
+ 0
+ ]
+ },
+ "r": {
+ "a": 0,
+ "k": 0
+ },
+ "sa": {
+ "a": 0,
+ "k": 0
+ },
+ "o": {
+ "a": 1,
+ "k": [
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 10
+ ],
+ "t": 22.562
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 5
+ ],
+ "t": 41.365
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 20
+ ],
+ "t": 62.047
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 5
+ ],
+ "t": 80.85
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 20
+ ],
+ "t": 99.651
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 0
+ ],
+ "t": 116.574
+ },
+ {
+ "s": [
+ 20
+ ],
+ "t": 131.6162109375
+ }
+ ]
+ }
+ },
+ "ef": [],
+ "shapes": [
+ {
+ "ty": "gr",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Group",
+ "nm": "Ellipse 1",
+ "np": 3,
+ "it": [
+ {
+ "ty": "el",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Shape - Ellipse",
+ "nm": "Ellipse Path 1",
+ "d": 1,
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ]
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 198.609,
+ 198.609
+ ]
+ }
+ },
+ {
+ "ty": "fl",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Graphic - Fill",
+ "nm": "Fill 1",
+ "c": {
+ "a": 0,
+ "k":[0.4471, 0.7843, 0.8353, 1]
+ },
+ "r": 1,
+ "o": {
+ "a": 0,
+ "k": 100
+ }
+ },
+ {
+ "ty": "tr",
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100
+ ],
+ "ix": 3
+ },
+ "sk": {
+ "a": 0,
+ "k": 0,
+ "ix": 4
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 1,
+ 1
+ ],
+ "ix": 2
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 6
+ },
+ "sa": {
+ "a": 0,
+ "k": 0,
+ "ix": 5
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 7
+ }
+ }
+ ]
+ }
+ ],
+ "ind": 9
+ },
+ {
+ "ty": 4,
+ "nm": "transparent2",
+ "sr": 1,
+ "st": 0,
+ "op": 116,
+ "ip": 0,
+ "hd": false,
+ "ddd": 0,
+ "bm": 0,
+ "hasMask": false,
+ "ao": 0,
+ "ks": {
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0,
+ 0
+ ]
+ },
+ "s": {
+ "a": 1,
+ "k": [
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 0
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 234,
+ 234,
+ 100
+ ],
+ "t": 22.562
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 41.365
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 234,
+ 234,
+ 100
+ ],
+ "t": 62.047
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 80.85
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 234,
+ 234,
+ 100
+ ],
+ "t": 99.651
+ },
+ {
+ "o": {
+ "x": 0.167,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100,
+ 100,
+ 100
+ ],
+ "t": 116.574
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 234,
+ 234,
+ 100
+ ],
+ "t": 131.616
+ },
+ {
+ "s": [
+ 99,
+ 99,
+ 100
+ ],
+ "t": 148.5380859375
+ }
+ ]
+ },
+ "sk": {
+ "a": 0,
+ "k": 0
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 235,
+ 235,
+ 0
+ ]
+ },
+ "r": {
+ "a": 0,
+ "k": 0
+ },
+ "sa": {
+ "a": 0,
+ "k": 0
+ },
+ "o": {
+ "a": 1,
+ "k": [
+ {
+ "o": {
+ "x": 0.167,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100
+ ],
+ "t": 0
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 0
+ ],
+ "t": 22.562
+ },
+ {
+ "o": {
+ "x": 0.333,
+ "y": 0
+ },
+ "i": {
+ "x": 0.667,
+ "y": 1
+ },
+ "s": [
+ 100
+ ],
+ "t": 41.365
+ },
+ {
+ "o": {
+ "x": 0.167,
+ "y": 0.167
+ },
+ "i": {
+ "x": 0.833,
+ "y": 0.833
+ },
+ "s": [
+ 0
+ ],
+ "t": 62.047
+ },
+ {
+ "o": {
+ "x": 0.167,
+ "y": 0.167
+ },
+ "i": {
+ "x": 0.833,
+ "y": 0.833
+ },
+ "s": [
+ 0
+ ],
+ "t": 80.85
+ },
+ {
+ "o": {
+ "x": 0.167,
+ "y": 0.167
+ },
+ "i": {
+ "x": 0.833,
+ "y": 0.833
+ },
+ "s": [
+ 0
+ ],
+ "t": 99.651
+ },
+ {
+ "o": {
+ "x": 0.167,
+ "y": 0.167
+ },
+ "i": {
+ "x": 0.833,
+ "y": 0.833
+ },
+ "s": [
+ 0
+ ],
+ "t": 116.574
+ },
+ {
+ "s": [
+ 0
+ ],
+ "t": 131.6162109375
+ }
+ ]
+ }
+ },
+ "ef": [],
+ "shapes": [
+ {
+ "ty": "gr",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Group",
+ "nm": "Ellipse 1",
+ "np": 3,
+ "it": [
+ {
+ "ty": "el",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Shape - Ellipse",
+ "nm": "Ellipse Path 1",
+ "d": 1,
+ "p": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ]
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 198.609,
+ 198.609
+ ]
+ }
+ },
+ {
+ "ty": "fl",
+ "bm": 0,
+ "hd": false,
+ "mn": "ADBE Vector Graphic - Fill",
+ "nm": "Fill 1",
+ "c": {
+ "a": 0,
+ "k":[0.4471, 0.7843, 0.8353, 1]
+ },
+ "r": 1,
+ "o": {
+ "a": 0,
+ "k": 100
+ }
+ },
+ {
+ "ty": "tr",
+ "a": {
+ "a": 0,
+ "k": [
+ 0,
+ 0
+ ],
+ "ix": 1
+ },
+ "s": {
+ "a": 0,
+ "k": [
+ 100,
+ 100
+ ],
+ "ix": 3
+ },
+ "sk": {
+ "a": 0,
+ "k": 0,
+ "ix": 4
+ },
+ "p": {
+ "a": 0,
+ "k": [
+ 1,
+ 1
+ ],
+ "ix": 2
+ },
+ "r": {
+ "a": 0,
+ "k": 0,
+ "ix": 6
+ },
+ "sa": {
+ "a": 0,
+ "k": 0,
+ "ix": 5
+ },
+ "o": {
+ "a": 0,
+ "k": 100,
+ "ix": 7
+ }
+ }
+ ]
+ }
+ ],
+ "ind": 10
+ }
+ ],
+ "v": "4.5.9",
+ "fr": 25,
+ "op": 116,
+ "ip": 0,
+ "assets": []
+}
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 58a1581..8c98c3b 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -21,4 +21,6 @@
#8072C8D5
#FB310D
+ #FB310D
+ #8768FF
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 00fe310..2c068ad 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -2,7 +2,7 @@
Funny Sounds
privacy
https://sites.google.com/view/funnysoundsairhorn
- version
+ Version
V%s
Loop
Removed from favorite
@@ -14,4 +14,16 @@
import audio
Record sound
Loading failed, please try again
+ New record
+ %s:%s:%s
+ Start recording
+ Stop recording
+ Give your created sound a name
+ Save sound
+ Please enter a name for your audio
+ Failed to rename the file, please try again
+ Save file successfully
+ Create sounds
+ Deleted successfully
+ Privacy Policy
\ No newline at end of file