سلام دوستان
من میخوام دستورات دو تابع را در یک کلاس قرار بدهم.
کلاس اول از نوع
public class sensor extends Activity implements SensorEventListene{}
کلاس دوم از نوع
public class MainActivity extends Activity implements MediaPlayerControl{}
دستورات را به صورت زیر در یک کلاس نوشتم تنها دستوراتی اجرا میشوند که مربوط به اولین تعریف اکتیویتی است، یعنی(MainActivity) اما دستوراتی را که در حلقه یا public class sensor نوشته شده اند اجرا نمیگردند. چرا؟
راه حل مناسبی سراغ دارید؟
من میخوام دستورات دو تابع را در یک کلاس قرار بدهم.
کلاس اول از نوع
public class sensor extends Activity implements SensorEventListene{}
کلاس دوم از نوع
public class MainActivity extends Activity implements MediaPlayerControl{}
دستورات را به صورت زیر در یک کلاس نوشتم تنها دستوراتی اجرا میشوند که مربوط به اولین تعریف اکتیویتی است، یعنی(MainActivity) اما دستوراتی را که در حلقه یا public class sensor نوشته شده اند اجرا نمیگردند. چرا؟
راه حل مناسبی سراغ دارید؟
کد پیاچپی:
//--------------------- شروع دستورات اولین کلاس
public class MainActivity extends Activity implements MediaPlayerControl {
//-----------------------دستورات کلاس سنسور و دومین اکتیوتی
public class sensor extends Activity implements SensorEventListener {
private TextView txt;
private Button btn_sensor_next;
private SensorManager sm;
private Sensor sAcc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sensor);
txt=(TextView) findViewById(R.id.txt);
btn_sensor_next=(Button)findViewById(R.id.btn_sensor_next);
//
btn_sensor_next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
MainActivity cd;
}
});
DisplayMetrics dm=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
sm=(SensorManager) getSystemService(Context.SENSOR_SERVICE);
sAcc=sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);
Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG).show();
}
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
private int top=10;
private int left=10;
@Override
public void onSensorChanged(SensorEvent s) {
txt.setText(s.values[0]+"");
}
@Override
protected void onResume() {
super.onResume();
sm.registerListener(this, sAcc, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
super.onPause();
sm.unregisterListener(this);
}
}
//---------------پایان دستورات کلاس سنسور و دومین کلاس
private Button btn_sensor;
//
private ArrayList<Song> songList;
private ListView songView;
//service
private MusicService musicSrv;
private Intent playIntent;
//binding
private boolean musicBound=false;
//controller
private MusicController controller;
//
private boolean paused=false, playbackPaused=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_sensor=(Button)findViewById(R.id.btn_sensor);
songView = (ListView)findViewById(R.id.song_list);
songList = new ArrayList<Song>;();
getSongList();
//
btn_sensor.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
startActivity(new Intent(MainActivity.this,sensor.class));
}
});
Collections.sort(songList, new Comparator<Song>;(){
public int compare(Song a, Song b){
return a.getTitle().compareTo(b.getTitle());
}
});
SongAdapter songAdt = new SongAdapter(this, songList);
songView.setAdapter(songAdt);
//setup controller
setController();
//end button
ImageButton imageButton_end = (ImageButton) findViewById(R.id.ib_end);
imageButton_end.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, MusicService.class);
stopService(intent);
finish();
}
});
}
private ServiceConnection musicConnection = new ServiceConnection(){
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
MusicBinder binder = (MusicBinder)service;
musicSrv = binder.getService();
musicSrv.setList(songList);
musicBound = true;
}
@Override
public void onServiceDisconnected(ComponentName name) {
musicBound = false;
}
};
@Override
protected void onStart() {
super.onStart();
if(playIntent==null){
playIntent = new Intent(this, MusicService.class);
bindService(playIntent, musicConnection, Context.BIND_AUTO_CREATE);
startService(playIntent);
}
}
public void songPicked(View view){
musicSrv.setSong(Integer.parseInt(view.getTag().toString()));
musicSrv.playSong();
if(playbackPaused){
setController();
playbackPaused=false;
}
controller.show(0);
}
public void getSongList(){
ContentResolver musicResolver = getContentResolver();
Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);
//
if(musicCursor!=null && musicCursor.moveToFirst()){
//
int titleColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.TITLE);
int idColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media._ID);
int artistColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.ARTIST);
//
do {
long thisId = musicCursor.getLong(idColumn);
String thisTitle = musicCursor.getString(titleColumn);
String thisArtist = musicCursor.getString(artistColumn);
songList.add(new Song(thisId, thisTitle, thisArtist));
}
while (musicCursor.moveToNext());
}
}
@Override
public boolean canPause() {
return true;
}
@Override
public boolean canSeekBackward() {
return true;
}
@Override
public boolean canSeekForward() {
return true;
}
public int getAudioSessionId() {
return 0;
}
@Override
public int getBufferPercentage() {
return 0;
}
@Override
public int getCurrentPosition() {
if(musicSrv!=null && musicBound && musicSrv.isPng())
return musicSrv.getPosn();
else return 0;
}
@Override
public int getDuration() {
if(musicSrv!=null && musicBound && musicSrv.isPng())
return musicSrv.getDur();
else return 0;
}
@Override
public boolean isPlaying() {
if(musicSrv!=null && musicBound)
return musicSrv.isPng();
return false;
}
@Override
public void pause() {
playbackPaused=true;
musicSrv.pausePlayer();
}
@Override
public void seekTo(int pos) {
musicSrv.seek(pos);
}
@Override
public void start() {
musicSrv.go();
}
private void setController(){
controller = new MusicController(this);
controller.setPrevNextListeners(new View.OnClickListener() {
@Override
public void onClick(View v) {
playNext();
}
}, new View.OnClickListener() {
@Override
public void onClick(View v) {
playPrev();
}
});
controller.setMediaPlayer(this);
controller.setAnchorView(findViewById(R.id.song_list));
controller.setEnabled(true);
}
private void playNext(){
musicSrv.playNext();
if(playbackPaused){
setController();
playbackPaused=false;
}
controller.show(0);
}
private void playPrev(){
musicSrv.playPrev();
if(playbackPaused){
setController();
playbackPaused=false;
}
controller.show(0);
}
@Override
protected void onPause(){
super.onPause();
paused=true;
}
@Override
protected void onResume(){
super.onResume();
if(paused){
setController();
paused=false;
}
}
@Override
protected void onStop() {
controller.hide();
super.onStop();
}
@Override
protected void onDestroy() {
stopService(playIntent);
musicSrv=null;
super.onDestroy();
}
}