AndroidのAudioRecord機能の使用を許可するクラスを作成しています。以下のコードでは、アプリケーションコンテキストとして何を配置しますか(android app)
このクラスは、メインアクティビティクラスとは別のクラスです。このクラスの名前はRecordAudioPermissionで、関連コードは下部にリストされています。私が抱えている問題は、関連するメソッドの引数にコンテキストをどのように置くべきかわからないということです。私は 'this'、 'Activity.getContext()'、 'RecordAudioPermission.getContext()'などのような通常のソリューションを試しましたが、動作していないようです。
問題コードを明確にするために、コードブロックに矢印>> [コード] < <とハイライト表示しました。
public class RecordAudioPermission {
android.media.AudioRecord RecordAudio = new AudioRecord(MediaRecorder.AudioSource.MIC, 44100, CHANNEL_IN_MONO, ENCODING_PCM_16BIT, AudioRecord.getMinBufferSize(44100, CHANNEL_IN_MONO, ENCODING_PCM_16BIT));
int MY_PERMISSIONS_RECORD_AUDIO = 1;
private void RecordAudioPermission() {
if (ContextCompat.checkSelfPermission(Pitchpipe.getContext(), Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
//When permission is not granted by user, show them message why this permission is needed.
if (ActivityCompat.shouldShowRequestPermissionRationale(Pitchpipe.getContext(), Manifest.permission.RECORD_AUDIO))
{
Toast.makeText(Pitchpipe.getContext(), "Please grant permissions to record audio", Toast.LENGTH_LONG).show();
//Give user option to still opt-in the permissions
ActivityCompat.requestPermissions(>>Pitchpipe.getContext()<<, new String[]{Manifest.permission.RECORD_AUDIO}, MY_PERMISSIONS_RECORD_AUDIO);
}
else {
// Show user dialog to grant permission to record audio
ActivityCompat.requestPermissions(>>Pitchpipe.getContext()<<, new String[]{Manifest.permission.RECORD_AUDIO}, MY_PERMISSIONS_RECORD_AUDIO);
}
}
//If permission is granted, then go ahead recording audio
else if (ContextCompat.checkSelfPermission(Pitchpipe.getContext(), Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED) {
//Go ahead with recording audio now
RecordAudio.startRecording();
}
}
}
私のためのコンテキストを取得し、私は私のアプリ(ピッチパイプ)と同じ名前の別のクラスを作成することである(方法のいくつかのためにその仕事、すべてではないが、)試してみましたが、最新のソリューション。
public class Pitchpipe extends Application {
private static Pitchpipe instance;
public static Pitchpipe getInstance() {
return instance;
}
public static Context getContext(){
return instance;
// or return instance.getApplicationContext();
}
@Override
public void onCreate() {
instance = this;
super.onCreate();
}
}
とAndroidマニフェスト内のタグにこれを追加する:次いで
android:name="com.example.remyryszkowski.pitchpipe.Pitchpipe"
とコンテキストの
Pitchpipe.getContext()
を置きます。
私はこの一見単純なことをやって、私のギターチューナーアプリは(理論的に)完了するので、どんな助けも大歓迎です。
注:私はJava、Android、および一般的なコーディングには新しく、私は約3ヶ月間初めてのアプリを作っている間に学習してきました。