Java 如何在Android中从一个类到另一个类获取变量?
我正在写一个应用程序来记录通话并上传所有被记录的文件 我在获取路径文件名并将其上载到服务器时遇到问题 我想当1个文件记录成功后,它就会上传 我有两门课: 类录音机来记录通话Java 如何在Android中从一个类到另一个类获取变量?,java,android,Java,Android,我正在写一个应用程序来记录通话并上传所有被记录的文件 我在获取路径文件名并将其上载到服务器时遇到问题 我想当1个文件记录成功后,它就会上传 我有两门课: 类录音机来记录通话 public class AudioRecorder { static String fileName; MediaRecorder mediaRecorder; public void start() { File directory = new File(fileName).g
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变量是contain PATH to file record
这个类在传入和传出呼叫时获取事件。
当调用状态为end时,它将上载文件
如何将类Audiorecorder的变量fileName的值获取到下面类的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);
我们可以通过多种方式从一个对象访问另一个对象上的变量。这主要有两种方式 1为变量getFileName创建getter方法,并通过创建的对象进行访问 2如果变量是静态的,那么可以编写静态getter函数。 例如:公共静态字符串getVal 还有其他方法,如通过将变量定义为public、protected或default直接访问方法,但不推荐使用,因为它违反了OOP原则 更高级的方法是通过Refection。AudioRecorder.fileName是访问文件名的最佳方法,因为fileName是类的静态成员。并将在类加载到内存中时加载 在这里,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 ?? */
我正在使用录音机录音机=新录音机;但是在这个类中找不到audioRecorder.fileName。它是一个静态成员,所以不需要任何对象来访问特定的变量fileName。所以只要试一下我推荐给你的。静态成员变量作为单个实体在所有对象之间共享。因此,@Luna无论您使用audioRecorder.fileName还是audioRecorder.fileName,都会给您相同的结果。谢谢