我正在编写应用程序来记录呼叫并上传所有文件都是记录。
获取路径文件名时出现问题并将其上传到我的服务器中。
我想当1个文件成功录制然后上传。
我有两节课:
用于记录通话的班级AudioRecorder
。
public class AudioRecorder {
static String fileName;
MediaRecorder mediaRecorder;
public void start() {
File directory = new File(fileName).getParentFile();
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setOutputFile(fileName);
mediaRecorder.prepare();
mediaRecorder.start();
}
public String courseGet(String startDate) {
return Environment.getExternalStorageDirectory().getAbsolutePath() + "/GhiAmCuocGoi/"
+ startDate + configPreferenceManager.getPathFormat();
}
}
在此类fileName
变量中包含PATH到文件记录。
此课程在Event
时获得incoming and outcoming call
。
当通话状态结束时,它将UploadFile
。
如何将类fileName
的变量Audiorecorder
的值变为下面的类fileToUploadPath
变量。
在这堂课中是:
TelephonyManager telManager = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
telManager.listen(new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (state != pState) {
if (state == TelephonyManager.CALL_STATE_OFFHOOK && callInfoPreferenceManager.getCallState()) {
Toast.makeText(
context,
callInfoPreferenceManager.getName() + " "
+ callInfoPreferenceManager.getPhoneNumber()
+ "\n" + "Start recording!!!", Toast.LENGTH_SHORT).show();
} else if (state == TelephonyManager.CALL_STATE_IDLE && callInfoPreferenceManager.getCallState() == CALLING) {
Toast.makeText(context, "Record success.", Toast.LENGTH_SHORT).show();
// I WILL UPLOAD AT HERE. AFTER RECORD SUCCESS
MultipartUploadRequest req = new MultipartUploadRequest(this, serverUrlString)
.addFileToUpload(fileToUploadPath, paramNameString);
}
}
}, PhoneStateListener.LISTEN_CALL_STATE);
答案 0 :(得分:0)
我们可以通过多种方式从一个对象访问其他对象。这些是主要的两种方式
1)为变量getFileName()创建getter方法,并通过创建的对象进行访问。
2)如果变量是静态的,那么你可以编写静态getter函数。 例如:public static String getVal();
还有其他方法可以直接访问方法,方法是将变量定义为public,protected或default,但不推荐,因为它违反了OOP原则。
更高级的方法是通过Refection。
答案 1 :(得分:0)
AudioRecorder.fileName
是访问文件名的最佳方式,因为fileName
是该类的static
成员。并在class
加载到内存中时加载。
这里,AudioRecorder是一个公共类,所以这个名为fileName
的变量将可以访问项目范围内的任何地方。
因此,AudioRecorder.fileName
是一种更好的访问方式。
MultipartUploadRequest req = new MultipartUploadRequest(this, serverUrlString)
.addFileToUpload(AudioRecorder.fileName, paramNameString);
// File Name passed as a parameter.
/*You should also put a check wheather this variable contains any actual
FileName that exists in Phone Memory(Either Internal/External) or Not ?? */