mirror of
https://github.com/freeedcom/ai-codereviewer.git
synced 2025-06-30 21:04:16 +00:00
add project adins
This commit is contained in:
parent
ad06ac5505
commit
f8f85d679d
5299 changed files with 625430 additions and 0 deletions
|
@ -0,0 +1,12 @@
|
|||
package com.adins.mss.base.todolist.form.helper;
|
||||
|
||||
import com.adins.mss.dao.Scheme;
|
||||
|
||||
public interface TaskPlanFilterObservable<T>{
|
||||
void subscribeEvent(TaskPlanFilterObserver<T> observer);
|
||||
void unsubscribeEvent(TaskPlanFilterObserver<T> observer);
|
||||
void emit(T filterData);
|
||||
void setSearchFilterText(int schemePos,int priorityPos);
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
package com.adins.mss.foundation.camerainapp.helper;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.net.Uri;
|
||||
|
||||
import com.adins.mss.foundation.questiongenerator.QuestionViewGenerator;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Created by angga.permadi on 7/28/2016.
|
||||
*/
|
||||
public class FileUtil {
|
||||
|
||||
public static File bitmapToFileConverter(Activity activity, Bitmap bitmap, File file) {
|
||||
try {
|
||||
FileOutputStream outStream = new FileOutputStream(file);
|
||||
bitmap.compress(Bitmap.CompressFormat.JPEG, 88, outStream);
|
||||
activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
|
||||
return file;
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static File bitmapToFileConverter(Activity activity, Bitmap bitmap) {
|
||||
try {
|
||||
return bitmapToFileConverter(activity, bitmap, QuestionViewGenerator.createImageFile(activity.getApplicationContext()));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,180 @@
|
|||
<resources>
|
||||
<string name="app_name">LeadIn</string>
|
||||
<string name="appVersion">v2.1.0.1</string>
|
||||
<string name="history_payment">Riwayat Pembayaran</string>
|
||||
<string name="installment_schedule">Installment Schedule</string>
|
||||
<!-- Left Menu -->
|
||||
<string name="drawer_open">Open drawer</string>
|
||||
<string name="drawer_close">close_drawer</string>
|
||||
|
||||
<!-- CHECK ORDER -->
|
||||
<string name="btnLookupCMO">Lookup CMO</string>
|
||||
<string name="btnLookupCMOMH">Lookup CMO / MH</string>
|
||||
<string name="lblSearchBy">Pilih Filter</string>
|
||||
<string name="lblStartDate">Tanggal Awal</string>
|
||||
<string name="lblEndDate">Tanggal Akhir</string>
|
||||
<string name="lblNomorOrder">Nomor Order</string>
|
||||
<string name="btnSearchOrder">Cari</string>
|
||||
<string name="menu">Main Menu</string>
|
||||
<string name="cekOrder">Check Order</string>
|
||||
<string name="btnOpen">Open</string>
|
||||
<string name="lblSearchByStatus">Status</string>
|
||||
<string name="btnOk">OK</string>
|
||||
<string name="cancel_order">Cancel Order</string>
|
||||
<string name="submit_all_task">Submit All Task</string>
|
||||
<string name="submit_task_collection">Submit Task Collection</string>
|
||||
<string name="lblAccountName">Account Name :</string>
|
||||
<string name="lblProduct">Product :</string>
|
||||
<string name="lblStatus">Status :</string>
|
||||
<string name="allStatus">All Status</string>
|
||||
|
||||
<string-array name="dropdownAccountStatus">
|
||||
<item>All Status</item>
|
||||
<item>Lead</item>
|
||||
<item>Bid</item>
|
||||
<item>Qualified</item>
|
||||
<item>Completed</item>
|
||||
<item>Deleted</item>
|
||||
</string-array>
|
||||
<string-array name="cbSearchBy">
|
||||
<item >Tanggal</item>
|
||||
<item >Nomor Order</item>
|
||||
<item >Nama Customer</item>
|
||||
</string-array>
|
||||
<string-array name="cbSearchByStatus">
|
||||
<item >ALL</item>
|
||||
<item >On Survey</item>
|
||||
<item >On CA</item>
|
||||
</string-array>
|
||||
<string-array name="cbUpdateOrder">
|
||||
<item >Open Order</item>
|
||||
<item >Cancel Order</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Main Menu -->
|
||||
<string name="title_mn_tasklist">Order Progress</string>
|
||||
<string name="title_mn_reportsummary">Report Summary</string>
|
||||
<string name="title_mn_depositreport">Deposit Report</string>
|
||||
<string name="title_mn_newtask">New Order</string>
|
||||
<string name="title_mn_surveyperformance">Survey Performance</string>
|
||||
<string name="title_mn_surveyverification">Survey Verification</string>
|
||||
<string name="title_mn_surveyapproval">Survey Approval</string>
|
||||
<string name="title_mn_surveyassign">Survey Assignment</string>
|
||||
<string name="title_mn_surveyreassign">Survey Re-Assignment</string>
|
||||
<string name="title_mn_installmentschedule">Installment Schedule</string>
|
||||
<string name="title_mn_setting">Pengaturan</string>
|
||||
|
||||
|
||||
<string name="login_desc">Login ke Aplikasi LeadIn</string>
|
||||
|
||||
<string name="toast_crash">Ooooops ! MSSODR crashed, but a report has been sent to my developer to help fix the issue !</string>
|
||||
<string name="password">Password :</string>
|
||||
<string name="user_id">User ID :</string>
|
||||
|
||||
<string name="news_desc">TextView</string>
|
||||
<string name="title_news_parent">Medium Text</string>
|
||||
<string name="data_not_found">Data tidak tersedia.</string>
|
||||
|
||||
<string name="dummy_no_order">1234567</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="medium_text">Medium Text</string>
|
||||
<string name="title_activity_developer_option">Dev Options</string>
|
||||
<string name="msgNoNewVersion">Versi saat ini adalah versi terakhir</string>
|
||||
<string name="msgNoTaskList">Anda tidak memiliki daftar task</string>
|
||||
<string name="changelog_v230"><![CDATA[Perbaikan: <br/>
|
||||
1. Support Multilingual <br/>
|
||||
2. Update compatibility untuk Android M <br/>
|
||||
3. Support refresh lokasi dengan mengetuk GPS Icon <br/>
|
||||
4. Peningkatan performa <br/>
|
||||
5. Perbaikan managemen memory <br/>
|
||||
6. Menampilkan radius accuracy di tampilan peta<br/>
|
||||
7. Menampilkan pertanyaan tidak relevan secara otomatis<br/>
|
||||
8. Mendukung menyalin jawaban dari pertanyaan lain <br/>
|
||||
9. Mendukung validasi pertanyaan tingkat lanjut <br/>
|
||||
10. Minor Bug fixes]]>\n</string>
|
||||
<string name="changelog_v2310"><![CDATA[Perbaikan: <br/> 1. Mendukung menyalin jawaban dengan kondisi tertentu]]></string>
|
||||
<string name="changelog_v2320"><![CDATA[Perbaikan: <br/>
|
||||
1. perbaikan gambar profile dan gambar cover
|
||||
]]></string>
|
||||
<string name="changelog_v200"><![CDATA[Perbaikan: <br/>
|
||||
1. Mendukung fitur linimasa tugas<br/>
|
||||
2. Mendukung menu navigasi]]></string>
|
||||
<string name="changelog_v210"><![CDATA[Perbaikan: <br/>
|
||||
1. Mendukung fitur Promo]]></string>
|
||||
<string name="changelog_v220"><![CDATA[Perbaikan: <br/>
|
||||
1. Mendukung fitur Oauth]]></string>
|
||||
<string name="changelog_v2330"><![CDATA[Perbaikan: <br/>
|
||||
1. Perbaikan Sinkronisasi<br/>
|
||||
2. Perbaikan Linimasa untuk Absensi<br/>
|
||||
3. Perbaikan memuat jawaban pertanyaan<br/>
|
||||
4. Menambahkan pengecekan root device]]></string>
|
||||
<string name="changelog_v2340"><![CDATA[Perbaikan: <br/>
|
||||
1. Alphanumeric pada Password]]></string>
|
||||
<string name="changelog_v2350"><![CDATA[Perbaikan: <br/>
|
||||
1. Perbaikan bug<br/>
|
||||
2. Menghilangkan Form tidak aktif]]></string>
|
||||
<string name="changelog_v2360"><![CDATA[Perbaikan: <br/>
|
||||
1. Perbaikan bug]]></string>
|
||||
<string name="changelog_v2370"><![CDATA[Perbaikan: <br/>
|
||||
1. Perbaikan bug
|
||||
2. Perbaikan eror pada GPS]]></string>
|
||||
<string name="changelog_v2380"><![CDATA[Perbaikan: <br/>
|
||||
1. Perbaikan bug]]></string>
|
||||
<string name="changelog_v2390"><![CDATA[Perbaikan: <br/>
|
||||
1. Perbaikan bug]]></string>
|
||||
<string name="changelog_v23100"><![CDATA[Perbaikan: <br/>
|
||||
1. Perbaikan bug]]></string>
|
||||
<string name="changelog_v23110"><![CDATA[Perbaikan: <br/>
|
||||
1. Perbaikan bug]]></string>
|
||||
<string name="changelog_v23120"><![CDATA[Perbaikan: <br/>
|
||||
1. Perbaikan bug]]></string>
|
||||
<string name="changelog_v23130"><![CDATA[Perbaikan: <br/>
|
||||
1. Perbaikan bug]]></string>
|
||||
<string name="changelog_v23140"><![CDATA[Perbaikan: <br/>
|
||||
1. Perbaikan bug]]></string>
|
||||
<string name="changelog_v23150"><![CDATA[Perbaikan: <br/>
|
||||
1. Perbaikan bug]]></string>
|
||||
<string name="changelog_v23160"><![CDATA[Perbaikan: <br/>
|
||||
1. Perbaikan bug]]></string>
|
||||
<string name="changelog_v23170"><![CDATA[Perbaikan: <br/>
|
||||
1. Perbaikan bug]]></string>
|
||||
<string name="changelog_v23180"><![CDATA[Perbaikan: <br/>
|
||||
1. Perbaikan bug]]></string>
|
||||
<string name="changelog_v23190"><![CDATA[Perbaikan: <br/>
|
||||
1. Perbaikan bug]]></string>
|
||||
<string name="changelog_v2400"><![CDATA[Perbaikan: <br/>
|
||||
1. Penambahan informasi terkait device di menu about<br/>
|
||||
2. Mendukung tipe jawaban online lookup<br/>
|
||||
3. Tampilan task list dapat berupa box atau list]]></string>
|
||||
<string name="changelog_v3110"><![CDATA[Changes: <br/>
|
||||
1. Penambahan status TaskH FailedDraft ketika mendapatkan response code tertentu saat submit task dari web.<br/>
|
||||
2. Penambahan user help .<br/>
|
||||
3. Pembetulan take picture failed di android 10 .<br/>
|
||||
4. App lemot saat Login-Logout-Login .<br/>
|
||||
5. Penyempurnaan answer type LuOnline .<br/>
|
||||
6. Pembetulan bug uploading task di timeline tidak muncul.<br/>
|
||||
7. Penambahan support untuk Android 10]]></string>
|
||||
<string name="changelog_v3120">
|
||||
<![CDATA[ Changes: <br/>
|
||||
1. Pembetulan Cloud CSV tidak dapat diimport .<br/>
|
||||
2. Pembetulan service berhenti ketika keluar aplikasi.<br/>
|
||||
3. Pembetulan crash saat sinkronisasi .<br/>
|
||||
4. Pembetulan crash saat is_emergency mati .<br/>
|
||||
5. Hapus search by priority . <br/>
|
||||
6. Pembetulan force stop tidak menuju timeline . ]]>
|
||||
</string>
|
||||
<string name="changelog_v3130">
|
||||
<![CDATA[ Changes: <br/>
|
||||
1. Perbaikan issue user help.<br/>
|
||||
2. Perbaikan perilaku logout otomatis ketika menekan tombol kembali.<br/>
|
||||
3. Tambah aksi panggil nomor telepon customer pada customer form.<br/>
|
||||
4. Perbaikan validasi tidak berjalan pada form dikarenakan regex.<br/>
|
||||
5. Tambahkan teks contoh pada user help data dinamis.<br/>
|
||||
]]>
|
||||
</string>
|
||||
<string name="changelog_v3140">
|
||||
<![CDATA[ Changes: <br/>
|
||||
1. Refactor beberapa kode.<br/>
|
||||
2. Perbaikan bug.<br/>]]>
|
||||
</string>
|
||||
</resources>
|
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* Copyright 2010 Kevin Gaudin
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.acra.util;
|
||||
|
||||
import java.security.cert.CertificateException;
|
||||
import java.security.cert.X509Certificate;
|
||||
|
||||
import javax.net.ssl.X509TrustManager;
|
||||
|
||||
/**
|
||||
* Accepts any certificate, ideal for self-signed certificates.
|
||||
*/
|
||||
class NaiveTrustManager implements X509TrustManager {
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see javax.net.ssl.X509TrustManager#getAcceptedIssuers()
|
||||
*/
|
||||
@Override
|
||||
public X509Certificate[] getAcceptedIssuers() {
|
||||
return new X509Certificate[0];
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* javax.net.ssl.X509TrustManager#checkClientTrusted(java.security.cert.
|
||||
* X509Certificate[], java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public void checkClientTrusted(X509Certificate[] x509CertificateArray,
|
||||
String string) throws CertificateException {
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* javax.net.ssl.X509TrustManager#checkServerTrusted(java.security.cert.
|
||||
* X509Certificate[], java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public void checkServerTrusted(X509Certificate[] x509CertificateArray,
|
||||
String string) throws CertificateException {
|
||||
}
|
||||
}
|
|
@ -0,0 +1,108 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package com.adins.mss.foundation.db;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import com.adins.mss.base.crashlytics.FireCrash;
|
||||
import com.adins.mss.constant.Global;
|
||||
import com.adins.mss.dao.DaoMaster;
|
||||
import com.adins.mss.dao.DaoMaster.DevOpenHelper;
|
||||
import com.adins.mss.dao.DaoSession;
|
||||
import com.adins.mss.foundation.formatter.Tool;
|
||||
import com.adins.mss.foundation.security.storepreferences.ObscuredSharedPreferences;
|
||||
|
||||
import de.greenrobot.dao.database.Database;
|
||||
|
||||
|
||||
/**
|
||||
* @author michael.bw
|
||||
*/
|
||||
public class DaoOpenHelper {
|
||||
private static DaoMaster daoMaster;
|
||||
private static DaoSession daoSession;
|
||||
private static Database db;
|
||||
|
||||
|
||||
public DaoOpenHelper(Context context) {
|
||||
try {
|
||||
String key = null;
|
||||
String storedKey = null;
|
||||
ObscuredSharedPreferences sharedPref =
|
||||
ObscuredSharedPreferences.getPrefs(context, "GlobalData", Context.MODE_PRIVATE);
|
||||
if (sharedPref.getString("DB_SECRET_KEY", null) == null) {
|
||||
key = Tool.generateKey();
|
||||
ObscuredSharedPreferences.Editor sharedPrefEditor = sharedPref.edit();
|
||||
sharedPrefEditor.putString("DB_SECRET_KEY", key);
|
||||
sharedPrefEditor.commit();
|
||||
}
|
||||
|
||||
storedKey = sharedPref.getString("DB_SECRET_KEY", null);
|
||||
Log.d("storedkey",storedKey);
|
||||
|
||||
if (Global.IS_DBENCRYPT) {
|
||||
DaoMaster.EncryptedDevOpenHelper helper = new DaoMaster.EncryptedDevOpenHelper(context, Global.MSMDB);
|
||||
db = helper.getWritableDatabase(storedKey);
|
||||
daoMaster = new DaoMaster(db);
|
||||
daoSession = daoMaster.newSession();
|
||||
} else {
|
||||
DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, Global.MSMDB);
|
||||
db = helper.getWritableDatabase();
|
||||
daoMaster = new DaoMaster(db);
|
||||
daoSession = daoMaster.newSession();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
FireCrash.log(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* you can use DaoSession.clear(). However, it will clear all all objects from the session.
|
||||
* If you want to avoid that, you have to execute a regular query and delete the result entities
|
||||
* (for example with deleteInTx).
|
||||
*/
|
||||
public static void clear() {
|
||||
if (daoSession != null)
|
||||
daoSession.clear();
|
||||
}
|
||||
|
||||
public static DaoSession getDaoSession(Context context) {
|
||||
if (daoSession == null) {
|
||||
new DaoOpenHelper(context);
|
||||
}
|
||||
return daoSession;
|
||||
}
|
||||
|
||||
public static void closeAll() {
|
||||
if (daoSession != null) {
|
||||
daoSession.clear();
|
||||
db.close();
|
||||
daoSession = null;
|
||||
}
|
||||
}
|
||||
|
||||
public static Database getDb(Context context) {
|
||||
if (daoMaster == null) {
|
||||
new DaoOpenHelper(context);
|
||||
}
|
||||
if(daoMaster == null){
|
||||
return null;
|
||||
}
|
||||
|
||||
return daoMaster.getDatabase();
|
||||
}
|
||||
|
||||
public static DaoMaster getDaoMaster(Context context) {
|
||||
if (daoMaster == null) {
|
||||
new DaoOpenHelper(context);
|
||||
}
|
||||
if(daoMaster == null)
|
||||
return null;
|
||||
|
||||
return daoMaster;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,80 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/LinearLayout1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:weightSum="1">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.5">
|
||||
<ScrollView
|
||||
android:id="@+id/scrollView1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:fillViewport="true">
|
||||
|
||||
<TableLayout
|
||||
android:id="@+id/orderDetailTable"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:stretchColumns="1">
|
||||
</TableLayout>
|
||||
</ScrollView>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/Bottomlayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5">
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnLookupCMO"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:onClick="doLookupCMO"
|
||||
android:text="@string/btnLookupCMO"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnSubmit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:onClick="doSubmit"
|
||||
android:text="@string/btnSubmit"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtNotes"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@+id/btnSubmit"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_below="@+id/txtCMO"
|
||||
android:ems="10"
|
||||
android:hint="@string/customer_notes_hint"
|
||||
android:inputType="textMultiLine"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtCMO"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_below="@+id/btnLookupCMO"
|
||||
android:visibility="gone"
|
||||
android:text="@string/dummy_text_3"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
|
@ -0,0 +1,190 @@
|
|||
package com.adins.mss.foundation.audio;
|
||||
|
||||
import android.content.Context;
|
||||
import android.media.MediaPlayer;
|
||||
import android.media.MediaRecorder;
|
||||
import android.view.View;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.adins.mss.base.crashlytics.FireCrash;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @author gigin.ginanjar
|
||||
*/
|
||||
public class AudioRecord {
|
||||
public static MediaPlayer myPlayer;
|
||||
private MediaRecorder myRecorder;
|
||||
private String outputFile = null;
|
||||
private Context context;
|
||||
|
||||
public AudioRecord(Context context) {
|
||||
this.context = context;
|
||||
|
||||
}
|
||||
|
||||
public static void stopPlay(View view) {
|
||||
try {
|
||||
if (myPlayer != null) {
|
||||
myPlayer.stop();
|
||||
myPlayer.release();
|
||||
myPlayer = null;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static void playAudio(Context context, byte[] soundByteArray) {
|
||||
FileOutputStream fos = null;
|
||||
|
||||
try {
|
||||
// create temp file that will hold byte array
|
||||
File tempAudio = File.createTempFile("voiceNotes", "m4a", context.getCacheDir());
|
||||
tempAudio.deleteOnExit();
|
||||
fos = new FileOutputStream(tempAudio);
|
||||
fos.write(soundByteArray);
|
||||
|
||||
// Tried reusing instance of media player
|
||||
// but that resulted in system crashes...
|
||||
myPlayer = new MediaPlayer();
|
||||
|
||||
// Tried passing path directly, but kept getting
|
||||
// "Prepare failed.: status=0x1"
|
||||
// so using file descriptor instead
|
||||
try(FileInputStream fis = new FileInputStream(tempAudio)){
|
||||
myPlayer.setDataSource(fis.getFD());
|
||||
myPlayer.prepare();
|
||||
myPlayer.start();
|
||||
}
|
||||
catch(IOException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
ex.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
if (fos != null)
|
||||
fos.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* // * Start Recording. <br/>
|
||||
* File Always Save in /data/data/files/audio/voiceNotes.m4a
|
||||
*
|
||||
* @param view
|
||||
*/
|
||||
public void startRecording(View view) {
|
||||
File file = context.getFilesDir();
|
||||
File newfile = new File(file.getAbsolutePath() + "/audio"); // audio is the directory 2 create
|
||||
newfile.mkdir();
|
||||
|
||||
outputFile = newfile + "/voiceNotes.m4a";
|
||||
myRecorder = new MediaRecorder();
|
||||
myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
|
||||
myRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
|
||||
myRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
|
||||
myRecorder.setOutputFile(outputFile);
|
||||
myRecorder.setAudioEncodingBitRate(8000);
|
||||
start(view);
|
||||
|
||||
}
|
||||
|
||||
public void start(View view) {
|
||||
try {
|
||||
myRecorder.prepare();
|
||||
myRecorder.start();
|
||||
} catch (IllegalStateException e) {
|
||||
// start:it is called before prepare()
|
||||
// prepare: it is called after start() or before setOutputFormat()
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
// prepare() fails
|
||||
e.printStackTrace();
|
||||
}
|
||||
System.out.print("Recording Point: Recording");
|
||||
Toast.makeText(context, "Start recording...",
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop Recording Audio
|
||||
*/
|
||||
public void stop(View view) {
|
||||
try {
|
||||
myRecorder.stop();
|
||||
myRecorder.release();
|
||||
myRecorder = null;
|
||||
} catch (IllegalStateException e) {
|
||||
// it is called before start()
|
||||
e.printStackTrace();
|
||||
} catch (RuntimeException e) {
|
||||
// no valid audio/video data has been received
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void play(View view) {
|
||||
try {
|
||||
myPlayer = new MediaPlayer();
|
||||
myPlayer.setDataSource(outputFile);
|
||||
myPlayer.prepare();
|
||||
myPlayer.start();
|
||||
} catch (Exception e) {
|
||||
FireCrash.log(e);
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets Bytes of audioNotes
|
||||
*
|
||||
* @return byte[]
|
||||
*/
|
||||
public byte[] saveAudioToByte() {
|
||||
byte[] files = null;
|
||||
FileInputStream fis = null;
|
||||
try {
|
||||
fis = new FileInputStream(outputFile);
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
File file = new File(outputFile);
|
||||
long lengthFile = file.length();
|
||||
byte[] buff = new byte[(int) lengthFile];
|
||||
int i = Integer.MAX_VALUE;
|
||||
try {
|
||||
while ((i = fis.read(buff, 0, buff.length)) > 0) {
|
||||
baos.write(buff, 0, i);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
files = baos.toByteArray();
|
||||
} catch (FileNotFoundException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
if (fis != null)
|
||||
fis.close();
|
||||
}catch (IOException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return files;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package com.adins.mss.coll.networks;
|
||||
|
||||
/**
|
||||
* Created by angga.permadi on 6/6/2016.
|
||||
*/
|
||||
public interface ClosingTaskListener {
|
||||
|
||||
void onClosingTaskSuccess();
|
||||
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<dimen name="dialog_padding">25dp</dimen>
|
||||
|
||||
<dimen name="card_padding_openSource">12dp</dimen>
|
||||
|
||||
<dimen name="aboutImage_openSource">72dp</dimen>
|
||||
|
||||
<dimen name="textSizeLarge_openSource">20sp</dimen>
|
||||
<dimen name="textSizeSmall_openSource">14sp</dimen>
|
||||
<dimen name="textSizeExtraSmall_openSource">12sp</dimen>
|
||||
|
||||
|
||||
<!-- Default screen margins, per the Android Design guidelines. -->
|
||||
<dimen name="activity_horizontal_margin">16dp</dimen>
|
||||
<dimen name="activity_vertical_margin">16dp</dimen>
|
||||
|
||||
<dimen name="control_right_margin">8dp</dimen>
|
||||
<dimen name="ptr_progress_bar_stroke_width">4dp</dimen>
|
||||
|
||||
<dimen name="crop__bar_height">48dp</dimen>
|
||||
<dimen name="line_height">2dp</dimen>
|
||||
<dimen name="padding_small">4dp</dimen>
|
||||
<dimen name="padding_medium">8dp</dimen>
|
||||
<dimen name="padding_large">16dp</dimen>
|
||||
<dimen name="text_margin">16dp</dimen>
|
||||
<dimen name="exr_listItemHeight">48dp</dimen>
|
||||
<dimen name="exr_mediumListItemHeight">64dp</dimen>
|
||||
<dimen name="exr_largeListItemHeight">72dp</dimen>
|
||||
|
||||
<dimen name="exr_margin">16dp</dimen>
|
||||
<dimen name="exr_iconSize">24dp</dimen>
|
||||
|
||||
<dimen name="card_margin">3dp</dimen>
|
||||
<dimen name="card_shadow">5dp</dimen>
|
||||
</resources>
|
Loading…
Add table
Add a link
Reference in a new issue