저는 안드로이드를 매우 신.습니다. 선택한 시간에 모든 소리를 끄는 응용 프로그램을 만들고 싶습니다. 일부 코드가있는 서비스를 만들었고 이클립스에서 오류가 없지만 버튼을 누르면 아무 일도 일어나지 않습니다. 응용 프로그램 관리자에서 내 프로그램과 SilentHours 서비스가 실행중인 것을 볼 수 있습니다. 여기에 내 코드입니다 :안드로이드 서비스가 작동하지 않을 수 있습니다.
MainActivity.java
package com.example.silencecontrol;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
public final static String EXTRA_NAME = "sending silentHour value to service SilenceHours";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void setSilenceHours(View view) {
EditText editText1 = (EditText)findViewById(R.id.editText1);
TextView textView1 = (TextView)findViewById(R.id.textView1);
if(editText1.length() > 0) {
Intent intent = new Intent(this, SilentHours.class);
String editText1String = editText1.getText().toString();
int silentHour = Integer.parseInt(editText1String);
intent.putExtra(EXTRA_NAME, silentHour);
this.startService(intent);
} else {
textView1.setText("Please enter the silence hour. ");
}
}
}
SilentHours.java
package com.example.silencecontrol;
import java.util.Calendar;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.os.IBinder;
public class SilentHours extends Service {
public SilentHours() {
}
protected void onHandleIntent(Intent intent) {
int silentHour = Integer.parseInt(intent.getStringExtra(MainActivity.EXTRA_NAME));
Calendar calendar = Calendar.getInstance();
int currentTime = calendar.get(Calendar.HOUR_OF_DAY);
if(currentTime >= silentHour) {
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamVolume(AudioManager.STREAM_RING, 0, 0);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0);
}
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
}
그리고 그런데 나는 onHandleIntent 방법을 @Override 수 없습니다. @Override
주석을 넣으면 오류가 발생합니다.
The method onHandleIntent(Intent) of type SilentHours must override or implement a supertype method.
해당 주석이 필요합니까?
그럼 의도적으로 어떻게 작동할까요?! 나는 onHandleIntent가 단지 한 번만 실행된다는 것을 의미합니다. 호출에 대한 조건은 실패하고 서비스는 아무런 효과없이 실행됩니다 ...! Android AlarmManager를 사용하라는 조언을드립니다. –
@twntee 왜? 내 코드에 무슨 문제가 있습니까? – Salivan
아무 잘못 없습니다. '@ Override '가 의미하는 바를 배우게됩니다. 그것이 중요 할 때! –