Mehdi Jahed Manesh

توسعه دهنده اندروید
  • تعداد ارسال ها

    24
  • تاریخ عضویت

  • آخرین بازدید

اعتبار در انجمن

7 Neutral

درباره Mehdi Jahed Manesh

  • درجه
    توسعه دهنده
  1. مشکلی نداره ، شما وقتی داری get میکنید ، خروجی ریخته میشه تو List حالا شما با این List هر کاری که دوست داری انجام بده List list = MyApplication.getStoryDAO().getStory(); Story story = list.get(0); String title = story.getTitle();
  2. سلام اگر مشکلتون کار با دیتابیس است باید به این صورت عمل کنید. 1-باید برای داستانتون یه سری خصوصیات تعریف کنید.در کلاس جداگانه مثلا public class StoryInfo { private int id; private String part; private String title; private String story; private byte[] image; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getPart() { return part; } public void setPart(String part) { this.part = part; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getStory() { return story; } public void setStory(String story) { this.story = story; } public byte[] getImage() { return image; } public void setImage(byte[] image) { this.image = image; } } 2-ساخت کلاس Open Helper public class MySqliteOpenHelper extends SQLiteOpenHelper { public MySqliteOpenHelper(Context context) { super(context, "story.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { String createTable = "CREATE TABLE STORY (_id INTEGER PRIMARY KEY AUTOINCREMENT," + "part TEXT NOT NULL," + "title TEXT NOT NULL," + "story TEXT NOT NULL," + "image BLOB);"; db.execSQL(createTable); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } 3-ساخت یک Interface public interface StoryDAO { void addStory(Story story); void updateStory(Story story); void deleteStory(int id); List getStory(); Person getStoryById(int id); } 4-ساخت کلاس SqliteDAO public class SqliteDAO implements StoryDAO { private SQLiteDatabase db; public SqliteDAO(Context context) { MySqliteOpenHelper helper = new MySqliteOpenHelper(context); db = helper.getWritableDatabase(); } @Override public void addStory(Story story) { ContentValues contentValues = new ContentValues(); contentValues.put("part", story.getName()); contentValues.put("title", story.getFamily()); contentValues.put("story", story.getTelephone()); contentValues.put("image", story.getImage()); db.insert("STORY", null, contentValues); } @Override public void updateStory(Story story) { ContentValues contentValues = new ContentValues(); contentValues.put("part", story.getName()); contentValues.put("title", story.getFamily()); contentValues.put("story", story.getTelephone()); contentValues.put("image", story.getImage()); db.update("STORY", contentValues, "_id = " + story.getId(), null); } @Override public void deleteStory(int id) { db.delete("STORY", "_id = " + id, null); } @Override public List getStory() { Cursor cursor = db.rawQuery("SELECT * FROM STORY", null); List storyList = new ArrayList(); while (cursor.moveToNext()) { Story story = new Story(); story.setId(cursor.getInt(cursor.getColumnIndex("_id"))); story.setName(cursor.getString(cursor.getColumnIndex("part"))); story.setFamily(cursor.getString(cursor.getColumnIndex("title"))); story.setAdrress(cursor.getString(cursor.getColumnIndex("story"))); story.setImage(cursor.getBlob(cursor.getColumnIndex("image"))); storyList.add(story); } return storyList; } @Override public Story getStoryById(int id) { Cursor cursor = db.rawQuery("SELECT * FROM STORY WHERE _id = " + id, null); if (cursor.moveToNext()) { Story story = new Story(); story.setId(cursor.getInt(cursor.getColumnIndex("_id"))); story.setName(cursor.getString(cursor.getColumnIndex("part"))); story.setFamily(cursor.getString(cursor.getColumnIndex("title"))); story.setAdrress(cursor.getString(cursor.getColumnIndex("story"))); story.setImage(cursor.getBlob(cursor.getColumnIndex("image"))); return story; } else { return null; } } } 5-ساخت کلاسی که از کلاس Application به ارث برده شده باشد و اسم این کلاس باید به AndroidManifest.xml در تگ application اضافه شود. public class MyApplication extends Application { private static StoryDAO storyDAO; public static StoryDAO getStoryDAO() { return storyDAO; } @Override public void onCreate() { super.onCreate(); storyDAO = new SqliteDAO(this); } } android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:name=".MyApplication" > android:name=".MainActivity" android:label="@string/app_name" > 6-کار با دیتابیس تمومه برای تست دیتابیس این کد را ببینید public class MainActivity extends Activity { private StoryAdapter adapter; private List listStoty; private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnNewStory = (Button)findViewById(R.id.btnNewStory); listStoty = new ArrayList(); adapter = new PersonAdapter(this, listStoty); listView = (ListView)findViewById(R.id.listView); listView.setAdapter(adapter); refreshList(); } @Override public void onClick(View v) { Story story = new Story(); story.setPart(editTextPart.getText().toString()); story.setTitle(editTextTitle.getText().toString()); story.setStory(editTextStory.getText().toString()); story.setImage(null); MyApplication.getStoryDAO().addStory(story); refreshList(); } private void refreshList(){ List tempList = MyApplication.getStoryDAO().getStory(); listStoty.clear(); listStoty.addAll(tempList); adapter.notifyDataSetChanged(); } } نکته » StoryAdapter کلاسی است که ListView شما را Custom میکند اگه خواستین کد اون رو هم مینویسم براتون.مهم اینه با این روش هر جا که خواستین میتوانید داستان به دیتابیستون اضافه کنید یا پاک کنید یا کل داستان هارو بریزید تو ListView کد گرفتن کل داستان های List myStoryList = MyApplication.getStoryDAO().getStory(); کد اضافه کردن به دیتابیس Story story = new Story(); story.setPart(editTextPart.getText().toString()); story.setTitle(editTextTitle.getText().toString()); story.setStory(editTextStory.getText().toString()); story.setImage(null); MyApplication.getStoryDAO().addStory(story); امیدوارم که مفید باشه توضیحاتم. اگر سوالی بود درخدمتم...
  3. شما نمیتوانید به دیتابیس برنامه ها دسترسی داشته باشید مگر اینکه گوشیتون دسترسی روت داشته باشه.اگر روت نیس باید خودتان به صورت برنامه نویسی از روت به حافظه خارجی کپی کنید. اگر با Emulator AVD برنامتون را اجرا کنید می توانید با Android Device Monitoring دسترسی روت داشته باشین ، داخل Android Device Monitoring تب File Explorer میتوانید دیتا بیس رو پیدا کنید.توجه کنید که این امکان فقط برای Emulator تعبیه شده است. root>data>data>your packageName>databases>myDB.db
  4. سلام وقتی از Button فقط میخوای بگی به محض کلیک شدن فلان کارو انجام بده و در طول برنامتون دیگه کار خاصی باهاش ندارید از onClick xml استفاده می کنند.ولی اگر بخوای در زمان اجرا ویژگی Button را تغییر بدید مثلا View.visible / View.gone / btn.setText باید از دکمه رفرنس بگیرید به خاطر همین دیگه میان با onClickListener استفاده می کنند . ولی کلا دلبخواهیه...
  5. سلام یعنی شما با دیتا میخواید شبکه کنید دستگاهو؟(اینترنت) من نمیدونم چه منطقی پشت برنامه شماست.اگر میخواید تمامی client ها ip همدیگرو بدونن ، باید به محض بر قراری با سرور ، قبل از اینکه client بخواد ارتباط با دیگر client های دیگه داشته باشه باید خودشو به سرور رجیستر کنه توسط یک رشته یکتا که همون ip خودشه.بعد سرور میاد ip client هارو به دیگران میفرسته. به هر حال چه با wifi چه با دیتا اگه میخواید این کارو انجام بدید طرز کارش اینجوریه. لینکی که به من دادید کلیه و به درد audio real time میخوره. کد اولی برای گرفتن ip سرورِ. کد دومی هم همه جا کاربرد داره ip network .
  6. سلام منم رو این API دارم کار میکنم برای سرور این راه خوبه البته اگر با WIFI P2P کار میکنید String hostAddress = info.groupOwnerAddress.getHostAddress(); اگر IP Client را میخواهید با این تکه کد حل میشه. public static String getIPAddress(boolean useIPv4) { try { List interfaces = Collections.list(NetworkInterface.getNetworkInterfaces()); for (NetworkInterface intf : interfaces) { List addrs = Collections.list(intf.getInetAddresses()); for (InetAddress addr : addrs) { if (!addr.isLoopbackAddress()) { String sAddr = addr.getHostAddress().toUpperCase(); boolean isIPv4 = InetAddressUtils.isIPv4Address(sAddr); if (useIPv4) { if (isIPv4) return sAddr; } else { if (!isIPv4) { int delim = sAddr.indexOf('%'); // drop ip6 port suffix return delim<0 ? sAddr : sAddr.substring(0, delim); } } } } } } catch (Exception ex) { } // for now eat exceptions return ""; } String ipv4_client = getIPAddress(true);// IPv4 String ipv6_client = getIPAddress(false);// IPv6
  7. سلام دیتابیس شما در root میباشد root>data>data>your packageName>databases>myDB.db و میتوانید دیتابیس را به حافظه خارجی کپی کنید
  8. خودم یافتم...
  9. با سلام بعد از وصل شدن 2 تا گوشی با WiFi Direct ، خیلی راحت میتونیم Server Id را بدست آوریم. در این حالت فقط Client با Server میتواند تبادل اطلاعات کند.حالا اگر بخوایم Server هم ارتباط متقابل داشته باشد نیازمند Client Id هستیم. چطور و از چه طرقی می توانیم ID را بدست آوریم؟ با تشکر...
  10. import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Typeface; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; public class MainActivity extends Activity { private SharedPreferences sharedPreferences; private SharedPreferences.Editor editor; private TextView t1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sharedPreferences = getSharedPreferences("key_pref", MODE_PRIVATE); editor = sharedPreferences.edit(); t1 = (TextView) findViewById(R.id.textView1); Button btnChangeFont = (Button) findViewById(R.id.btnChangeFont); btnChangeFont.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(MainActivity.this, font.class); startActivity(intent); } }); } protected void setFace() { String fonts = sharedPreferences.getString("key_font","Tahoma.TTF"); Typeface face = Typeface.createFromAsset(getAssets(), "font/" + fonts); TextView txtShow = (TextView) findViewById(R.id.txtShow); txtShow.setTypeface(face); String str = (String) txtShow.getText().toString(); txtShow.setText(str); TextView txtShow1 = (TextView) findViewById(R.id.textView1); txtShow1.setTypeface(face); String str1 = (String) txtShow1.getText().toString(); txtShow1.setText(str1); TextView txtShow2 = (TextView) findViewById(R.id.btnChangeFont); txtShow2.setTypeface(face); String str2 = (String) txtShow2.getText().toString(); txtShow2.setText(str2); } @Override protected void onResume() { super.onResume(); setFace(); setSize(); final SeekBar sk = (SeekBar) findViewById(R.id.seekBar1); sk.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { int fontSize = 0; @Override public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub if (fontSize < 30) { fontSize = 30; sk.setProgress(fontSize); editor.putInt("key_size",fontSize).commit(); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // TODO Auto-generated method stub fontSize = progress; t1.setTextSize(fontSize); editor.putInt("key_size",fontSize).commit(); } }); } private void setSize() { int size = sharedPreferences.getInt("key_size", 18); t1.setTextSize(size); } } import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.widget.RadioGroup; public class font extends Activity implements RadioGroup.OnCheckedChangeListener { private String font; RadioGroup rg; private SharedPreferences sharedPreferences; private SharedPreferences.Editor editor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.font); sharedPreferences = getSharedPreferences("key_pref", MODE_PRIVATE); editor = sharedPreferences.edit(); rg = (RadioGroup) findViewById(R.id.rg); rg.setOnCheckedChangeListener(this); } @Override public void onCheckedChanged(RadioGroup group, int CheckedId) { switch (CheckedId) { case R.id.radio0: font = "Tahoma.TTF"; editor.putString("key_font",font).commit(); finish(); break; case R.id.radio1: font = "FreeStyle.TTF"; editor.putString("key_font",font).commit(); finish(); break; } } }
  11. سلام مشکلتون اینه که mMediaPlayer را release نمیکنید. String ringtone = settingPreferences.getString( "perform_ringtone", "default ringtone"); Uri uri = Uri.parse(ringtone); if (mMediaPlayer == null) { playSound(getActivity(), uri); } else { mMediaPlayer.release(); playSound(getActivity(), uri); } private void playSound(Context context, Uri ringtone) { mMediaPlayer = new MediaPlayer(); try { mMediaPlayer.setDataSource(context, ringtone); final AudioManager audioManager = (AudioManager) context .getSystemService(Context.AUDIO_SERVICE); if (audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) != 0) { mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mMediaPlayer.prepare(); mMediaPlayer.start(); } } catch (IOException e) { System.out.println("Error in playing ringtone."); } } // Stop Sound if(mMediaPlayer != null){ mMediaPlayer.release(); }
  12. import android.content.SharedPreferences; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.View; public class YourActivity extends ActionBarActivity { private SharedPreferences sharedPreferences; private SharedPreferences.Editor editor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_your); sharedPreferences = getSharedPreferences("key_pref", MODE_PRIVATE); editor = sharedPreferences.edit(); // for saving ur info (font , size ) editor.putString("key_font", "font_mono").commit(); editor.putInt("key_size", 18).commit(); } // Load info @Override public void onClickLoad(View view) { String font = sharedPreferences.getString("key_font", "font_sand_serif"); // default font is font_sand_serif if u dont save anything int size = sharedPreferences.getInt("key_size", 25); // default size is 25 if u dont save anything } } سلام چند تا نکته : با این کد اگه تو هر activity , fragment و ... باشی کافیه که این کد رو بزنی تا load یا save کنی. sharedPreferences = getSharedPreferences("key_pref", MODE_PRIVATE); editor = sharedPreferences.edit(); نکته : به key ها دقت کن که باید سر جای خودشون قرار بدی و حتما باید Final باشن.
  13. دوست عزیز آخه کدوم متد؟؟؟ پس اگه اینجوری باشه چرا obfuscate می کنن کد هارو؟ کلا obfuscate کاراش اینه : تغیر اسامی کلاس ها ، متد ها ، فیلدها ، متغیر های محلی و کلا همه چی به a,b,c,d,e,f,g,h,... (حالا یکی بگه اگه همه چی حروف الفبا باشه چطوری یارو میفهمه؟؟؟؟؟؟؟) اضافه کردن کلاس ، متد ، فیلد - بیخودی ، سر کاری ، الکی - برای گمراه کردن اون یارو و غیره .... که با همین 2تا یارو می ره پیه بازیش
  14. سلام Jadx-gui.bat دیکامپایلر هست یک بار با اون تستش کن خودتون متوجه میشوید.اگر طرف بخواد یه همچین کاری کنه باید شبیه این آدم فضاییا باشه.
  15. سلام اگه منظورت Navigation Drawer است این کدشه، از چپ به راست باز میشه private DrawerLayout mDrawerLayout; private Button myBtn; myBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) { mDrawerLayout.closeDrawer(Gravity.RIGHT); } else { mDrawerLayout.openDrawer(Gravity.RIGHT); } } });