Как я могу передать значение EditText постоянно расширяет WallpaperService
Я пытаюсь создать живые обои и хочу передать строку редактирования текста wallpaperservice
от MainActivity
, Есть ли способ передать значение edittext в любое время, и он рисует на холсте.
это мой MainActiviy
public class Main extends Activity implements OnClickListener {
private EditText et;
private Button setWall;
private TextView tv;
public String passString = "";
ConsoleWallpaper consol;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
consol = new ConsoleWallpaper();
et = (EditText) findViewById(R.id.editText1);
setWall = (Button) findViewById(R.id.button1);
setWall.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.setWall:
break;
}
}
}
и это расширяет WallpaperService, где я хочу передавать значения каждый раз при нажатии кнопки.
public class MyWallpaper extends WallpaperService {
public static final String SHARED_PREFS_NAME = "WallpaperSettings";
private final Handler mHandler = new Handler();
public String receivedString= "";
private Canvas c;
MainActivity main = new MainActivy();
Handler testHandler = new Handler();
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public Engine onCreateEngine() {
return new TextEngine();
}
class TextEngine extends Engine implements
SharedPreferences.OnSharedPreferenceChangeListener {
private int mCanvasHeight = 1;
// private int mCanvasWidth = 1;
private int mOffsetTop = 100;
private int mOffsetLeft;
private final Paint mPaint = new Paint();
private int iTo = 1;
private int iFrom = 0;
private String mSpeed = "normal";
private int iTimes;
private String mText;
private String receivedName;
private final Runnable mDrawCube = new Runnable() {
public void run() {
drawFrame();
}
};
private boolean mVisible;
private SharedPreferences mPrefs;
TextEngine() {
Typeface typeface = Typeface.createFromAsset(getAssets(),
"fonts/Geo-Regular.ttf");
final Paint paint = mPaint;
paint.setTextSize(18);
paint.setTypeface(typeface);
paint.setColor(0xff00ff00);
paint.setAntiAlias(true);
mPrefs = ConsoleWallpaper.this.getSharedPreferences(
SHARED_PREFS_NAME, 0);
mPrefs.registerOnSharedPreferenceChangeListener(this);
onSharedPreferenceChanged(mPrefs, null);
}
public void onSharedPreferenceChanged(SharedPreferences prefs,
String key) {
mSpeed = prefs.getString("speed", "normal");
}
@Override
public void onCreate(SurfaceHolder surfaceHolder) {
super.onCreate(surfaceHolder);
}
@Override
public void onDestroy() {
super.onDestroy();
mHandler.removeCallbacks(mDrawCube);
}
@Override
public void onVisibilityChanged(boolean visible) {
mVisible = visible;
if (visible) {
drawFrame();
} else {
mHandler.removeCallbacks(mDrawCube);
}
}
@Override
public void onSurfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
super.onSurfaceChanged(holder, format, width, height);
// mCanvasWidth = width;
mCanvasHeight = height;
mPaint.setTextSize(width / 30);
// mOffsetLeft = width / 30;
mOffsetLeft = 0;
drawFrame();
}
@Override
public void onSurfaceCreated(SurfaceHolder holder) {
super.onSurfaceCreated(holder);
}
@Override
public void onSurfaceDestroyed(SurfaceHolder holder) {
super.onSurfaceDestroyed(holder);
mVisible = false;
mHandler.removeCallbacks(mDrawCube);
}
@Override
public void onOffsetsChanged(float xOffset, float yOffset, float xStep,
float yStep, int xPixels, int yPixels) {
drawFrame();
}
public void drawFrame() {
final SurfaceHolder holder = getSurfaceHolder();
c = null;
try {
c = holder.lockCanvas();
if (c != null) {
// draw something
onDraw(c);
}
} finally {
if (c != null)
holder.unlockCanvasAndPost(c);
}
// Reschedule the next redraw
mHandler.removeCallbacks(mDrawCube);
if (mVisible) {
mHandler.postDelayed(mDrawCube, 1000 / 25);
}
}
void onDraw(Canvas c) {
c.save();
mText = receivedString";
// draw
String text = mText.substring(iFrom, iTo);
String[] Strings = text.split("#");
mPaint.setTextSize(40);
for (int i = 0; i < Strings.length; i++) {
c.drawText(Strings[i], mOffsetLeft, mOffsetTop, mPaint);
mOffsetTop += mPaint.getTextSize();
if (mOffsetTop > mCanvasHeight)
reset(c);
}
iFrom = 0;
mOffsetTop = 100;
int t;
if (mSpeed.equalsIgnoreCase("slow"))
t = 5;
else
t = 1;
if (iTimes % t == 0) {
if (mSpeed.equalsIgnoreCase("fast"))
iTo++;
iTo++;
iTimes = 0;
}
iTimes++;
if (iTo > mText.length()) {
iFrom = 0;
iTo = 1;
reset(c);
}
c.restore();
}
void reset(Canvas c) {
mOffsetTop = 100;
Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));
c.drawPaint(paint);
}
}
}